簡體   English   中英

測試php / mysqli連接

[英]Testing php / mysqli connection

我正在尋找一種方法來測試php / mysqli連接的連接部分。 我正在從Vista上的LAMP服務器遷移到Ubuntu上的相同,並且正在使mysqli工作。 我知道所有正確的模塊都已安裝,PhpMyAdmin可以完美運行。 我已經遷移了一個站點,並沒有mysqli連接正常工作。 我得到的錯誤是“在非對象上調用成員函數xxx()”,當查詢本身錯誤或查詢是從錯誤的連接准備時,通常會彈出。 我知道查詢本身是好的,因為它在具有完全相同的數據庫結構和數據的其他服務器上工作正常。 這讓我有了聯系。 我試着編寫一個非常簡單的測試連接並將其放在一個循環中,例如..

if(***connection here ***)
{ echo "connected"; }
else
{ echo "not connected"; }

它呼應“連接”,這很棒。 但只是為了檢查我在連接中更改了密碼,以便我知道它無法連接,它仍然回顯“已連接”。 所以,if / else測試顯然不是要走的路....

mysqli_connect()總是返回一個MySQLi對象。 要檢查連接錯誤,請使用:

$mysqli_connection = new MySQLi('localhost', 'user', 'pass', 'db');
if ($mysqli_connection->connect_error) {
   echo "Not connected, error: " . $mysqli_connection->connect_error;
}
else {
   echo "Connected.";
}

為了測試你終端中的php連接執行:

$ php -r 'var_dump(mysqli_connect("localhost:/tmp/mysql.sock", "MYSQL_USER", "MYSQL_PASS",
     "DBNAME));'

那么,您需要對各種數據庫調用進行更多的錯誤處理。 快速/骯臟的方法就是簡單地做

 $whatever = mysqli_somefunction(...) or die("MySQL error: ". mysqli_error());

如果發生錯誤,所有函數都返回布爾值FALSE,或者帶有結果的適當mysqli對象。 沒有錯誤檢查,你會做:

 $result = $mysqli->query("blah blah will cause a syntax error");
 $data = $result->fetchRow();  // $result is "FALSE", not a mysqli_object, hence the "call to member on non-object"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM