2012-05-16 61 views
30

我已經設置了PHP,MySQL和Apache。 localhost()爲PHP,它運作良好。但是在我下載MySQL之後,它會報告:致命錯誤:調用未定義函數mysql_connect()

Fatal error: Call to undefined function mysql_connect()

我該如何解決這個問題?

+0

你安裝的軟件包之後重新啓動了Apache避免這些? – Devator

+0

http://nz.php.net/manual/en/mysql.installation.php – zerkms

+1

您標記了您的問題[mysql-error-1064] - 如果您的腳本無法與MySQL通信,您怎麼看? – Repox

回答

6

驗證您的PHP安裝是否已通過mysql支持編譯。創建一個包含<?php phpinfo(); exit(); ?>的測試網頁並將其加載到瀏覽器中。搜索MySQL的頁面。如果你沒有看到它,你需要重新編譯支持MySQL的PHP​​,或者重新安裝一個內置的PHP包。

+4

這裏是你從http://www.somacon.com/p109.php –

+1

複製的來源是他的幫助! –

+0

我有類似的問題,我的測試頁中沒有看到任何MySQL:https://jsfiddle.net/ad0gd90y/。相反,我只看到「mysqlnd」。我應該在PHP之前安裝MySQL嗎?如何用MySQL支持重新編譯PHP?@RohitKumarChoudhary – rosemary

29

打開你的終端並運行下面的命令。

sudo apt-get install mysql-server 

如果您正在運行PHP,你還需要安裝PHP模塊針對MySQL的5:

sudo apt-get install php5-mysql 
1

使用是在Windows 8 N這個問題得到了通過更改環境變量

後續解決這些步驟: 打開我的電腦屬性 - >高級系統設置 - >環境變量。 在'系統變量'下,選擇'路徑'並點擊'編輯' 在'變量值'中,添加'C:\ php;'或者php安裝的路徑。

單擊確定並應用設置並重新啓動系統。 它應該工作。

4
PHP.INI 

檢查,如果你忘了激活以下選項(加載模塊等等的MySQL):

; Directory in which the loadable extensions (modules) reside. 
; http://php.net/extension-dir 
; extension_dir = "./" 
; On windows: 
extension_dir = "ext" 
2

我有同樣的問題上RHEL6。事實證明,/etc/php.d中的mysql.ini文件只有一個模塊名稱,但需要一個完整的路徑名。在我的RHEL6系統,該系統的工作原理的條目是:

; Enable mysql extension module 

extension=/usr/lib64/php/modules/mysql.so 

修改文件後,我重新啓動Apache和一切工作。

14

如果升級到PHP 7.0後出現此錯誤,那麼您使用的是不推薦使用的庫。

mysql_connect — Open a connection to a MySQL Server
Warning
This extension was deprecated in PHP 5.5.0, and it was removed in PHP 7.0.0. Instead, the MySQLi or PDO_MySQL extension should be used.

這裏更多:http://php.net/manual/en/function.mysql-connect.php

+0

這應該被標記爲接受的答案 - 仍然使用mysql_ *調用是不好的做法。 – Skytiger

22

使用 「mysqli_connect」

$con = mysqli_connect("127.0.0.1","root","pass","your_database"); 

將要去工作,我定這個我的問題。

0

檢查是否mysqli的模塊安裝到您的PHP版本

$ ls /etc/php/7.0/mods-available/mysql* 
/etc/php/7.0/mods-available/mysqli.ini /etc/php/7.0/mods-available/mysqlnd.ini 

啓用模塊

$ sudo phpenmod mysqli 
0

此代碼可以幫助你

<?php 

$servername = "localhost"; 
$username = "root"; 
$password = ""; 


$con = new mysqli($servername, $username, $password); 

?> 

但是改變 「服務器名稱」, 「用戶名」和「密碼」

0

這裏是一個快速修復:

所有的專業人士可能會恨我這個答案。但是我在服務器上遇到了同樣的錯誤:致命錯誤:未捕獲錯誤:調用未定義的函數mysql_connect()正在使用PHP 7.沒有時間重寫所有mysql代碼,因此如果有人需要快速臨時修復它是在CPANEL尋找PHP配置並將該帳戶的版本更改爲類似PHP 5.4而不是PHP 7。然後代碼工作正常,沒有上述錯誤。

0

一個解決辦法是在整個應用程序使用的適配器功能,如這些開始使用mysqli代替mysql:當你使用你的代碼行mysql_connect所以只需添加

if (!function_exists('mysql_connect')) { 
    function mysql_connect($host = '', $user = '', $password = '', $database = '', $port = 0, $socket = '') { 
     return mysqli_connect($host, $user, $password, $database, $port, $socket); 
    } 
} 


if (!function_exists('mysql_select_db')) { 
    function mysql_select_db($link, $dbname) { 
     mysqli_select_db($link, $dbname); 
    } 
} 
-1

的問題顯示出來它在mysqli_cOnnect,它將解決問題。
您還必須在整個代碼行中使用mysqli,否則問題將再次出現。
示例mysql_select_db然後將是mysqL_select_db
這是選擇數據庫。

感謝希望這有助於

1

此錯誤是隻來爲你的PHP版本V7.0。 你可以使用PHP V5.0 其他

使用它

mysqli_connect("localhost","root","") 

我從MySQL只取得了mysqli的

相關問題