用php連接數據庫失敗的解決辦法:1、打開php.ini配置文件,去掉“extension=php_mysql.dll”前面的注釋分號,并通過extension指定“php_mysql.dll”的絕對路徑;2、修改mysql的my.ini配置文件;3、修改數據集字符集即可。
php入門到就業線上直播課:進入學習
Apipost = Postman + Swagger + Mock + Jmeter 超好用的API調試工具:點擊使用
本教程操作環境:Windows10系統、PHP8.1版、Dell G3電腦。
用php連接數據庫失敗怎么辦?
PHP連接mysql遇到的坑(附解決方法,親測有效)
PHP連接mysql遇到的坑
環境: win10 + PHP5.48 + Apache2.2 + Mysql8.017
PHP連接實例
<?php $link = mysql_connect("localhost", "myuser", "mypasswd"); #myuser: 用戶名 #mypasswd: 密碼 var_dump($link); mysql_close();?>
登錄后復制
坑1 Call to undefinedfunction mysql_connect()

原因: mysql_connect()函數未定義,php.ini配置文件中未開啟
解決方法:
1.1 配置php.ini函數

1.1.1 去掉extension=php_mysql.dll前面的注釋分號;
1.1.2 通過extension指定php_mysql.dll的絕對路徑
1.2 配置文件路徑
1.2.1 將php.ini文件拷貝至c:windowssystem32下
1.3 重啟Apache服務(具體怎么重啟就不說了,如果這個都不知道,那本文對你沒幫助)
坑2 The server requested authentication method unknown to the client

原因: mysql8.x的密碼鎖機制不一致導致的
在 mysql 8.x 以后,caching_sha2_password是默認的身份驗證插件,而不是以往的mysql_native_password。
解決方法
1.1 修改mysql的my.ini配置文件

可以看到默認的驗證方式是caching_sha2_password ,這里修改為mysql_native_password
1.2 mysql中查看對應用戶身份驗證插件

可以看到root用戶的身份驗證插件已經改為了mysql_native_password
如果身份驗證方式沒變,執行如下操作
# 登陸mysqlmysql -uroot -p# 使用mysql數據庫use mysql;# 修改身份驗證插件ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '你的密碼';
登錄后復制
坑3 字符集錯誤 sever sent charset unknowd to the client ,Please report to the decelopers

原因: MySQL8更換了默認的服務器字符集,mysql8.x的字符集character-set-server
默認是utf8mb4
,不再是5.x時代的utf8了
解決方法:
修改mysql的my.ini配置文件,具體修改條目如下:(這里只展示了需要修改的條目,原配置文件內容很多)
[client]default-character-set=utf8[mysql]default-character-set=utf8[mysqld]collation-server = utf8_unicode_cicharacter-set-server = utf8
登錄后復制
切記:任何每一次的修改,都需要重啟Apache服務,以及mysql服務!!!
推薦學習:《PHP視頻教程》