這種情況說明你的第一個參數錯誤,就是得到的不是數據庫資源。
讓客戶滿意是我們工作的目標,不斷超越客戶的期望值來自于我們對這個行業的熱愛。我們立志把好的技術通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領域值得信任、有價值的長期合作伙伴,公司提供的服務項目有:域名申請、虛擬空間、營銷軟件、網站建設、常熟網站維護、網站推廣。
你需要使用$row = mysql_fetch_row($res)來判斷資源是否存在,這樣就不會報錯。
這種錯誤一般就是我們常說的空引用,就是數據都不存在,你就調用數據的方法就會出問題。
連不上數據庫有一般的原因有:
一、防火墻設置不允許連接,這種情況PHP會提示網絡錯誤,報錯很慢,要等很久才報錯;
二、是用戶名、密碼不對,或者MYSQL數據庫沒有指定該用戶的登錄主機為%,這中情況或提示訪問被拒絕,報錯很快。
首先把數據庫路徑改一下試試:
realpath("/Shujuku.mdb") 改為 realpath("shujuku.mdb")
如果還是不行,可以改為ODBC連接方式再試試:
$connstr = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=". realpath("shujuku.mdb");
一、常用普通方法
$mysql_server="localhost";
$mysql_username="數據庫用戶名";
$mysql_password="數據庫密碼";
$mysql_database="數據庫名";
//建立數據庫鏈接
$conn = mysql_connect($mysql_server,$mysql_username,$mysql_password) or die("數據庫鏈接錯誤");
//選擇某個數據庫
mysql_select_db($mysql_database,$conn);
mysql_query("set names 'utf8'");
//執行MySQL語句
$result=mysql_query("SELECT id,name FROM 數據庫表");
//提取數據
$row=mysql_fetch_row($result);
在提取數據的時候,我們使用mysql_fetch_row,還可以使用mysql_fetch_assoc和mysql_fetch_array,具體的我們參考手冊。
第二、面向對象方法
$db=new mysqli($dbhost,$username,$userpass,$dbdatabase);
if(mysqli_connect_error()){
echo 'Could not connect to database.';
exit;
}
$result=$db-query("SELECT id,name FROM user");
$row=$result-fetch_row();
第三、PDO方法
$dsn='mysql:host='.$dbhost.';dbname='.$dbdatabase.';'
$dbh=new PDO($dsn,$username,$userpass);$stmt=$dbh-query('SELECT id,name FROM user');
$row=$stmt-fetch();
推薦第三種連接方式
1、用 mysql_connect 的方法,PHP7會報致命錯誤
$conn= mysql_connect('localhost','xueyanxiang','xueyanxiang');
Fatal error : Uncaught Error: Call to undefined function mysql_connect() in /Users/xueyanxiang/work/test/xue.php:31 Stack trace: #0 /Users/xueyanxiang/work/test/xue.php(119): xue-run() #1 {main} thrown in? /Users/xueyanxiang/work/test/xue.php ?on line? 31
原因是:
PHP5中使用mysql_connect()函數進行連接,但實際上,PHP5.5開始,MySQL就不推薦使用了,屬于廢棄函數
PHP7中貌似已經徹底不支持了,根據官網說明,取而代之的是如下兩個:
本擴展自 PHP 5.5.0 起已廢棄,并在將來會被移除。應使用?MySQLi?或?PDO_MySQL?擴展來替換之。參見?MySQL:選擇
API?指南以及相關 FAQ?以獲取更多信息。用以替代本函數的有:
mysqli_connect()
PDO::__construct()
使用時,不要在使用mysql_connect了,可以換用mysqli_connect(),用法基本類似吧,據說是面向對象的庫。
php.ini中,也只有extension=php_mysqli.dll,而不再有extension=php_mysql.dll這個拓展了。
2、可以使用mysqli,對象化,方法名與被廢棄的類似
$conn= mysqli_connect('localhost','xueyanxiang','xueyanxiang');
3、PDO工具,推薦使用
$dbh= "mysql:host=localhost;dbname=test";
$db= new PDO($dbh,'xueyanxiang','xueyanxiang');
$objQuery= $db-query("select * from user;");
$res= $objQuery-fetchAll(PDO::FETCH_ASSOC);
不填寫參數的話,默認是關聯和索引都有,如下圖
第一個問題: $db是對象,對象調用成員方法就是-
第二個問題:mysql_query是php5之前的函數,他不太安全,其實還有mysqli_query擴展增強版,但這些都沒有對象好用,為什么呢?因為每次使用都不是一個對象,但函數不一樣,使用的是同一個函數,如果你學過java的線程大概就能知道怎么回事了。對象new 你不用之后會回收,但函數就未必了,這也是為安全考慮,目前對象比較安全。
第三個問題:這個問題很簡單,你用的是對象連接,卻使用函數,這本就不是一個東西,你沒有給全局變量賦值(mysqli_connect($servername, $username, $password);),所以不能使用這個函數,這也就是安全問題(第二個問題,你看它一次只能使用一個連接,不像對象,可以new很多個,看出優劣了吧!這是進化的結果,因為php想干大型項目用對象,也比較最好管理),至于應該使用什么?$db -num_rows其實很簡單的,就是把以前的函數封裝成為對象,名字幾乎不變
文章標題:php7連不上數據庫,php連接不到自己的數據庫
文章源于:http://www.yijiale78.com/article30/dsgodso.html
成都網站建設公司_創新互聯,為您提供App設計、網站設計公司、ChatGPT、微信小程序、網站收錄、微信公眾號
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯