本文章總結了在php開發中可能會常常碰到的一些php連接不了mysql數據庫的一些問題總結與解決方法分享,有需要的朋友可參考一下。
問題一
今天給本本裝上mysql和php,一切安裝都很正常([email protected])。但用phpmyadmin連接測試時卻出現“#2002無法連接”的錯誤,用其它程序也是同樣問題。
檢查了下,php的mysql擴展正確安裝,mysql服務正常啟動--那就奇了怪了。又用navicat連接,居然連上了。。看來是php和mysql間的通訊出了問題。
百度了一下,問題被揪出來了:
mysql_connect()函數數據庫服務器(server)參數當前設置為localhost,但當其更改為127.0.0.1後又可以正常訪問。
系統hosts文件未提供127.0.0.1到localhost的解析。
解決方法(以win7系統為例):找到C:\Windows\System32\drivers\etc\hosts文件,默認為只讀,你需要復制一份到其他路徑如桌面,打開文件(打開方式:記事本),在文件末尾添加:
127.0.0.1 localhost
如果已存在去掉其前面的“#”。
問題二
php腳本可以正常運行,如phpinfo()。
只要一出現“mysql_connect”函數,就沒反應,也不報錯。
如 $conn = mysql_connect("127.0.0.1","root","xxxx") or die("MYSQL數據庫連接失敗:".mysql_error());
apache日志目錄error.log中出現
PHP Warning: PHP Startup: Unable to load dynamic library 'c:\\php\\ext\\php_mysql.dll'
解決辦法
將“libmysql.dll”復制到apache的bin目錄下。然後重啟,觀察error.log,如果錯誤消失,那恭喜了。
另:網上資料也有說將““libmysql.dll””“php_mysql.dll”復制到windows/system32的。
問題三
代碼如下 復制代碼 <?//以上代碼省略
運行時出現如下提示:
fatal error: call to undefined function mysql_connect() in var/www/html/mytest.php
解決方法
1.php.ini中
extension_dir設置為 "d:\apache2\php\ext "絕對路徑,否則有些環境中會出錯。
打開下面兩行功能擴展
extension=php_mysql.dll
extension=php_mysqli.dll
2.拷貝libmysql.dll(php目錄下)和php_mysql.dll(php/ext目錄下)至c:\windows\system32目錄下(libmysql.dll必須為php目錄下,比如我的為D:\apache2\php目錄下的libmysql.dll,php_mysql.dll則在D:\apache2\php\ext)
3.測試,
1> 先打開命令行
A)依次點擊“開始”菜單-> “mysql”-> “mysql5 server”-> “MySQL Command Line Client”
//如此步成功則mysql安全成功,失效則mysql安裝失敗,請卸載後重裝
B)輸入密碼
//此步正常則說明 root賬戶的密碼正確。失敗則賬號密碼有錯
2> 新建文件至主目錄,並保存為testmysql.php,接著在浏覽器中輸入http://localhost/testmysql.php (或者http://localhost:81/testmysql.php)
如果不行查看一下apache是否加載了php與 mysql方法
apache中支置對php5的支持httpd.conf文件中加入下面三行
PHPIniDir "D:/ccopen/php5/"
LoadModule php5_module "D:/ccopen/php5/php5apache2_2.dll"
AddType application/x-httpd-php .php
php.ini中去掉下面兩行分號
extension=php_mysql.dll
extension=php_mysqli.dll
將php_mysql.dll和libmysql.dll拷到system32
重起apache服務器