這種情況說明你的第一個(gè)參數(shù)錯(cuò)誤,就是得到的不是數(shù)據(jù)庫資源。

讓客戶滿意是我們工作的目標(biāo),不斷超越客戶的期望值來自于我們對(duì)這個(gè)行業(yè)的熱愛。我們立志把好的技術(shù)通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領(lǐng)域值得信任、有價(jià)值的長期合作伙伴,公司提供的服務(wù)項(xiàng)目有:域名申請、虛擬空間、營銷軟件、網(wǎng)站建設(shè)、常熟網(wǎng)站維護(hù)、網(wǎng)站推廣。
你需要使用$row = mysql_fetch_row($res)來判斷資源是否存在,這樣就不會(huì)報(bào)錯(cuò)。
這種錯(cuò)誤一般就是我們常說的空引用,就是數(shù)據(jù)都不存在,你就調(diào)用數(shù)據(jù)的方法就會(huì)出問題。
連不上數(shù)據(jù)庫有一般的原因有:
一、防火墻設(shè)置不允許連接,這種情況PHP會(huì)提示網(wǎng)絡(luò)錯(cuò)誤,報(bào)錯(cuò)很慢,要等很久才報(bào)錯(cuò);
二、是用戶名、密碼不對(duì),或者M(jìn)YSQL數(shù)據(jù)庫沒有指定該用戶的登錄主機(jī)為%,這中情況或提示訪問被拒絕,報(bào)錯(cuò)很快。
首先把數(shù)據(jù)庫路徑改一下試試:
realpath("/Shujuku.mdb") 改為 realpath("shujuku.mdb")
如果還是不行,可以改為ODBC連接方式再試試:
$connstr = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=". realpath("shujuku.mdb");
一、常用普通方法
$mysql_server="localhost";
$mysql_username="數(shù)據(jù)庫用戶名";
$mysql_password="數(shù)據(jù)庫密碼";
$mysql_database="數(shù)據(jù)庫名";
//建立數(shù)據(jù)庫鏈接
$conn = mysql_connect($mysql_server,$mysql_username,$mysql_password) or die("數(shù)據(jù)庫鏈接錯(cuò)誤");
//選擇某個(gè)數(shù)據(jù)庫
mysql_select_db($mysql_database,$conn);
mysql_query("set names 'utf8'");
//執(zhí)行MySQL語句
$result=mysql_query("SELECT id,name FROM 數(shù)據(jù)庫表");
//提取數(shù)據(jù)
$row=mysql_fetch_row($result);
在提取數(shù)據(jù)的時(shí)候,我們使用mysql_fetch_row,還可以使用mysql_fetch_assoc和mysql_fetch_array,具體的我們參考手冊。
第二、面向?qū)ο蠓椒?/p>
$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會(huì)報(bào)致命錯(cuò)誤
$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()函數(shù)進(jìn)行連接,但實(shí)際上,PHP5.5開始,MySQL就不推薦使用了,屬于廢棄函數(shù)
PHP7中貌似已經(jīng)徹底不支持了,根據(jù)官網(wǎng)說明,取而代之的是如下兩個(gè):
本擴(kuò)展自 PHP 5.5.0 起已廢棄,并在將來會(huì)被移除。應(yīng)使用?MySQLi?或?PDO_MySQL?擴(kuò)展來替換之。參見?MySQL:選擇
API?指南以及相關(guān) FAQ?以獲取更多信息。用以替代本函數(shù)的有:
mysqli_connect()
PDO::__construct()
使用時(shí),不要在使用mysql_connect了,可以換用mysqli_connect(),用法基本類似吧,據(jù)說是面向?qū)ο蟮膸臁?/p>
php.ini中,也只有extension=php_mysqli.dll,而不再有extension=php_mysql.dll這個(gè)拓展了。
2、可以使用mysqli,對(duì)象化,方法名與被廢棄的類似
$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);
不填寫參數(shù)的話,默認(rèn)是關(guān)聯(lián)和索引都有,如下圖
第一個(gè)問題: $db是對(duì)象,對(duì)象調(diào)用成員方法就是-
第二個(gè)問題:mysql_query是php5之前的函數(shù),他不太安全,其實(shí)還有mysqli_query擴(kuò)展增強(qiáng)版,但這些都沒有對(duì)象好用,為什么呢?因?yàn)槊看问褂枚疾皇且粋€(gè)對(duì)象,但函數(shù)不一樣,使用的是同一個(gè)函數(shù),如果你學(xué)過java的線程大概就能知道怎么回事了。對(duì)象new 你不用之后會(huì)回收,但函數(shù)就未必了,這也是為安全考慮,目前對(duì)象比較安全。
第三個(gè)問題:這個(gè)問題很簡單,你用的是對(duì)象連接,卻使用函數(shù),這本就不是一個(gè)東西,你沒有給全局變量賦值(mysqli_connect($servername, $username, $password);),所以不能使用這個(gè)函數(shù),這也就是安全問題(第二個(gè)問題,你看它一次只能使用一個(gè)連接,不像對(duì)象,可以new很多個(gè),看出優(yōu)劣了吧!這是進(jìn)化的結(jié)果,因?yàn)閜hp想干大型項(xiàng)目用對(duì)象,也比較最好管理),至于應(yīng)該使用什么?$db -num_rows其實(shí)很簡單的,就是把以前的函數(shù)封裝成為對(duì)象,名字幾乎不變
文章標(biāo)題:php7連不上數(shù)據(jù)庫,php連接不到自己的數(shù)據(jù)庫
文章源于:http://chinadenli.net/article30/dsgodso.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供App設(shè)計(jì)、網(wǎng)站設(shè)計(jì)公司、ChatGPT、微信小程序、網(wǎng)站收錄、微信公眾號(hào)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)