2012-05-18 92 views
2

當我嘗試從PHP代碼連接到我的MySQL數據庫時,似乎都沒問題,所有查詢都成功執行。然而,當代碼在PHPUnit的單元測試進行測試,我得到以下致命PHP的錯誤:PHPUnit未定義的函數mysql_connect()

PHP Fatal error: Call to undefined function mysql_connect().

如圖所示,此代碼的單元測試精細外,但PHPUnit的生成錯誤。

+1

您在使用兩個不同的PHP解釋器(也許PHP的CLI界面,一個和php-cgi的爲其他)? – Crontab

+7

請停止使用古老的'mysql_ *'函數編寫新代碼。他們不再被維護,社區已經開始[棄用過程](http://goo.gl/KJveJ)。相反,您應該瞭解[準備好的語句](http://goo.gl/vn8zQ)並使用[PDO](http://php.net/pdo)或[MySQLi](http://php.net/ mysqli的)。如果你不能決定,[本文](http://goo.gl/3gqF9)將有助於選擇。如果你關心學習,[這裏是一個很好的PDO相關教程](http://goo.gl/vFWnC)。 – vascowhite

+0

只需快速重寫mysql_代碼,但現在PHPUnit指示以下內容:未找到類'mysqli'。這是相當於 $ mysqli = new mysqli(「example.com」,「user」,「password」,「database」)的行;被執行。我錯過了什麼?我需要包含一些文件來使用mysqli嗎? – danielvdende

回答

0

這很可能是您使用的命名空間,因此mysql_queryMySQLi在此處未定義。

嘗試以下操作:

$mysqli = new \MySQLi(...); 
+0

不,恐怕這也不是解決方案。同樣的錯誤:( – danielvdende

0

我相信你有一個PHP版本7或更高版本的測試。

php documentation mysql_query,他們描述了以下

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. See also MySQL: choosing an API guide and related FAQ for more information. Alternatives to this function include: mysqli_query() PDO::query()

所以,兩個可能的解決方案:

  1. 降級PHP到較低版本(< 7);
  2. 用MySQLi或PDO替換你的mysql函數。
+0

)如果函數實際上是未定義的,那麼它可能是PHP 7.0而不是5.5。只要你願意忍受棄​​用警告,你可以使用5.5或5.6中的mysql funcs。 ,長期選項,必須將來自於廢棄的函數路程,使用PDO來代替。 – Simba

+0

這是正確的辛巴,我來編輯它。 此問題可能是,如果只是包php5-涉及到安裝PHP5-mysql的模塊常見的是安裝。 –

相關問題