這個就是用戶名密碼錯誤提示啊。注意 mysqli 和 mysql 函數(shù)的參數(shù)順序區(qū)別呀。
創(chuàng)新互聯(lián)建站自2013年起,先為繁峙等服務(wù)建站,繁峙等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為繁峙企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問題。
它都說了你提供的密碼不正確了。。不要懷疑它的報錯,你提供的密碼一定是錯了。或者本來應(yīng)該填密碼的地方,你填了別的。
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()函數(shù)進(jìn)行連接,但實際上,PHP5.5開始,MySQL就不推薦使用了,屬于廢棄函數(shù)
PHP7中貌似已經(jīng)徹底不支持了,根據(jù)官網(wǎng)說明,取而代之的是如下兩個:
本擴(kuò)展自 PHP 5.5.0 起已廢棄,并在將來會被移除。應(yīng)使用?MySQLi?或?PDO_MySQL?擴(kuò)展來替換之。參見?MySQL:選擇
API?指南以及相關(guān) FAQ?以獲取更多信息。用以替代本函數(shù)的有:
mysqli_connect()
PDO::__construct()
使用時,不要在使用mysql_connect了,可以換用mysqli_connect(),用法基本類似吧,據(jù)說是面向?qū)ο蟮膸臁?/p>
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);
不填寫參數(shù)的話,默認(rèn)是關(guān)聯(lián)和索引都有,如下圖
連不上數(shù)據(jù)庫有一般的原因有:
一、防火墻設(shè)置不允許連接,這種情況PHP會提示網(wǎng)絡(luò)錯誤,報錯很慢,要等很久才報錯;
二、是用戶名、密碼不對,或者M(jìn)YSQL數(shù)據(jù)庫沒有指定該用戶的登錄主機(jī)為%,這中情況或提示訪問被拒絕,報錯很快。
數(shù)據(jù)庫連接失敗的原因及解決方法
原因一:登錄賬號、密碼、服務(wù)器名稱、數(shù)據(jù)庫名稱登錄錯誤導(dǎo)致不能連接,這個比較常見,仔細(xì)檢查好所填信息是否正確,填寫正確一般就可以解決。
解決方法:當(dāng)正在使用的軟件出現(xiàn)數(shù)據(jù)庫不能連接時,一般就是服務(wù)器名出現(xiàn)問題,更改服務(wù)器名稱一般可以解決問題。數(shù)據(jù)庫如果是安裝在本機(jī),服務(wù)器名可以用“.”或“(local)”來代替 ;如果是安裝在局域網(wǎng)的其它計算機(jī)上,可以用IP地址作為服務(wù)器名。
原因二:如果沒能正確安裝SQL服務(wù)器,也會導(dǎo)致數(shù)據(jù)庫連接不上;安裝好數(shù)據(jù)庫后,如果SQL服務(wù)管理器沒有啟動,則要去服務(wù)那里開啟。
解決方法:如果是SQL數(shù)據(jù)庫未能能成功安裝,再次重新安裝時,可能會無法安裝,提示是存在一個未完成的安裝掛起。解決就方法是:打開注冊表編輯器,在HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager中找到并刪除PendingFileRenameOperations項目即可。
如果是更改了Windows的用戶名或者密碼,會導(dǎo)致SQL服務(wù)管理器不能啟動,解決辦法是去控制版面的服務(wù)那里修改啟動。具體是:點擊開始--設(shè)置--控制面板--管理工具--服務(wù)--找到MS SQL SERVER服務(wù)--在上面右鍵--屬性--登陸--修改啟動服務(wù)的帳戶和密碼。
原因三:因權(quán)限問題導(dǎo)致數(shù)據(jù)庫不能連接,解決方法是檢測計算機(jī)的安全保護(hù)限制、SQL Server安全設(shè)置、操作系統(tǒng)的安全限。
解決方法:可以先暫時關(guān)閉防火墻或者殺毒軟件,看是否是這些軟件的安全設(shè)置所導(dǎo)致。
SQL Server安全設(shè)置:打開企業(yè)管理器--展開SQ L Server組--右擊服務(wù)器名--點擊屬性--在SQL Server屬性--安全性中,把“身份驗證”選擇為“在SQL Server和Windows”;
如果SQL服務(wù)器采用的是Windows XP系統(tǒng),當(dāng)工作站電腦出現(xiàn)不能連接數(shù)據(jù)庫的情況時,可以在服務(wù)器和工作站各建立一個相同的WINDOWS用戶賬號和密碼
原因四:引起原因:網(wǎng)絡(luò)連接存在故障;
解決方法:檢修網(wǎng)絡(luò)是否存在故障。
一、常用普通方法
$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ù)庫鏈接錯誤");
//選擇某個數(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ù)的時候,我們使用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();
推薦第三種連接方式
第一個問題: $db是對象,對象調(diào)用成員方法就是-
第二個問題:mysql_query是php5之前的函數(shù),他不太安全,其實還有mysqli_query擴(kuò)展增強(qiáng)版,但這些都沒有對象好用,為什么呢?因為每次使用都不是一個對象,但函數(shù)不一樣,使用的是同一個函數(shù),如果你學(xué)過java的線程大概就能知道怎么回事了。對象new 你不用之后會回收,但函數(shù)就未必了,這也是為安全考慮,目前對象比較安全。
第三個問題:這個問題很簡單,你用的是對象連接,卻使用函數(shù),這本就不是一個東西,你沒有給全局變量賦值(mysqli_connect($servername, $username, $password);),所以不能使用這個函數(shù),這也就是安全問題(第二個問題,你看它一次只能使用一個連接,不像對象,可以new很多個,看出優(yōu)劣了吧!這是進(jìn)化的結(jié)果,因為php想干大型項目用對象,也比較最好管理),至于應(yīng)該使用什么?$db -num_rows其實很簡單的,就是把以前的函數(shù)封裝成為對象,名字幾乎不變
當(dāng)前標(biāo)題:php7不能訪問數(shù)據(jù)庫 php7不能訪問數(shù)據(jù)庫嗎
分享路徑:http://vcdvsql.cn/article18/doodjdp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供全網(wǎng)營銷推廣、網(wǎng)站策劃、標(biāo)簽優(yōu)化、品牌網(wǎng)站制作、品牌網(wǎng)站設(shè)計、動態(tài)網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)