2013-03-25 41 views
5

調用未定義的函數mysql_connect()函數...我已經尋找故障排除互聯網這個「調用未定義功能的mysql_connect()」錯誤,但沒有一個提出的過程工程...php + mysql的致命錯誤:在

當我嘗試從php訪問mysql時,出現此錯誤。我有PHP版本5.2.17和MySQL 5.1.68(mysql運行在php之外,我嘗試創建表和數據庫等)。

我去掉擴展在php.ini:

extension=php_mysql.dll 
extension=php_mysqli.dll 

和指定的路徑,以這些擴展。

我也爲我的PATH變量添加了PHP和MySQL。 我使用的是Apache 2.2。我在每次更改後都重新啓動服務器。

這是我在PHP代碼來訪問數據庫(但我想,這個問題是不是在語法):

<?php  
     $dbhost = 'localhost'; 
     $dbuser = 'root'; 
     $dbpass = 'pasw'; 
     $dbname = 'db'; 

     $conn = mysql_connect($dbhost, $dbuser, $dbpass) or die ('Error connecting to mysql'); 
     mysql_select_db($dbname); 
?> 

我的想法如何解決這個問題,u能提出一些其他故障排除提示?我對他的問題頗爲陌生......我想使用MySQL,因爲我將在實際服務器上使用MySQL時,我將使用我的網站並運行。提前致謝!

編輯:這是從Apache日誌:

[Mon Mar 25 13:50:42 2013] [error] [client 127.0.0.1] PHP Fatal error: Call to undefined function mysql_connect() in C:\\Web\\thenemis\\dbconnect.php on line 7, referer: http://localhost/thenemis/admin.php 
[Mon Mar 25 13:50:42 2013] [error] [client 127.0.0.1] File does not exist: C:/Web/favicon.ico 

EDIT2:這是從PHP的信息(我認爲這個問題可能是在php.ini文件中某個不確定的參數應用)。我沒有閱讀任何地方,我應該指定一些其他功能,而不是擴展名和路徑,但也許我錯了......你有什麼建議?

mysql 

MySQL Support enabled 
Active Persistent Links 0 
Active Links 0 
Client API version 5.0.51a 

Directive Local Value Master Value 
mysql.allow_persistent On On 
mysql.connect_timeout 60 60 
mysql.default_host no value no value 
mysql.default_password no value no value 
mysql.default_port no value no value 
mysql.default_socket no value no value 
mysql.default_user no value no value 
mysql.max_links Unlimited Unlimited 
mysql.max_persistent Unlimited Unlimited 
mysql.trace_mode Off Off 
+2

用phpinfo(),以確保您編輯正確的php.ini – tuffkid 2013-03-25 12:43:51

+0

您是否使用AMP堆疊(燈/瓦帕/等)? – 2013-03-25 12:44:13

+0

我分別安裝了php,mysql和apache(我不使用WAMp或任何東西) – Smajl 2013-03-25 12:45:50

回答

6

因爲它已經說過使用phpinfo()來確定mysql是否正確運行。 一般來說,你不應該使用mysql了更多,而是MySQL的新改進版本,稱爲mysqli的http://php.net/manual/de/book.mysqli.php

除了可以編程方式檢查是否有method_exists方法存在

+0

奇怪的事情剛剛發生。我重新啓動了我的電腦,並且我以某種方式工作。每次更改後我都重新啓動了apache,但它沒有幫助。這不知怎的,所以我解決了這個問題...無論如何感謝您的答案 - phpinfo()確實幫助了很多... – Smajl 2013-03-25 13:47:58

3

嘗試使用此一功能:

$dbhost = 'localhost'; 
$dbuser = 'root'; 
$dbpass = 'pasw'; 
$dbname = 'db'; 

<?php 
// Create connection 
$con=mysqli_connect($dbhost,$dbuser,$dbpass,$dbname); 

// Check connection 
if (mysqli_connect_errno($con)) 
    { 
    echo "Failed to connect to MySQL: " . mysqli_connect_error(); 
    } 
?> 

MySQL支持將被刪除的PHP,所以開始使用MySQLi或PDO來代替。

:)

0

我在計算機的系統變量中設置的路徑PHP,編輯路徑值C:/program files/php;php.ini啓用extension=php_mysqli.dll

然後我用這個功能

mysqli_connect($host,$username,$password)or die(mysql_error()); 

這一個系統重新啓動後。它爲我工作;我希望這個對你有用。

2

驗證您的PHP安裝是否已使用mysql支持進行編譯。創建一個包含<?php phpinfo(); exit(); ?>的測試php文件,並在瀏覽器中運行它。搜索關鍵字'MySQL'的頁面。如果你沒有看到它,你需要重新編譯支持MySQL的PHP​​,或者重新安裝內置的PHP包。

打開終端,運行波紋管的命令。

sudo apt-get install mysql-server 

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

sudo apt-get install php5-mysql