2012-04-30 25 views
1

我會試着再次問這個問題,但是不要輸入錯誤....我使用MySQLi連接並使用故意錯誤的連接變量來觸發錯誤。奇怪的MySQLi OO錯誤

按預期工作:

$conn = mysqli_connect("localhost","x","x","x"); 
    if (mysqli_connect_errno()) { 
    echo "Couldn't establish database connection blah blah"; 
    } 

這應該工作完全一樣,但它呈現出「無法獲取的MySQLi」警告:

$conn = new mysqli("localhost","x","x","x"); 
    if ($conn->connect_errno) { 
    echo "Couldn't establish database connection blah blah"; 
    } 

這兩種方法都很好連接的詳細信息時,是好的,但這不是重點。

回答

1

這在某些舊版本的PHP中無法正常工作。

如果您在5.2.9之前使用PHP版本,則$conn->connect_error(我認爲也是$conn->connect_errno)方法無法正常運行,您必須改用mysqli_connect_errno()

MySQLi constructor docs談這個。

的mysqli-> connect_error屬性只正常工作,如PHP版本5.2.9和5.3.0的。如果需要與早期PHP版本兼容,請使用mysqli_connect_error()函數。

// May need to use the procedural method, even in OO context... 
$conn = new mysqli("localhost","x","x","x"); 
if (mysqli_connect_error()) { 
    die('Connect Error (' . mysqli_connect_errno() . ') ' 
      . mysqli_connect_error()); 
} 
+0

衛生署,5.2.6!我會更新自己,但只是檢查目標主機,它也是5.2.6,我不能改變它,所以我想我會寫它非OO :) – Codecraft

+0

@Codecraft要清楚,你可以使用MySQLi完全OO除了這一個連接錯誤檢查。我只是將上面的'mysqli_connect()'改爲'new mysqli()'。複製/粘貼錯誤。 –

+0

謝謝,順便說一句。我的信仰得到了恢復,第二次試圖在這個問題被人們劫持並貶低後停止實際閱讀正確的答案。 – Codecraft