我準備將PHP 5.2.12的實時Web服務器更新爲5.3.5。在準備中,我已經在第二臺服務器上進行了更新,這是現場服務器(「開發」服務器)的鏡像。兩臺服務器都使用FreeBSD,並使用兩個端口來安裝PHP和MySQL。實時服務器使用MySQL 5.0.89,新升級的開發服務器使用5.1.54。mysql_insert_id()在PHP更新後停止工作
以下代碼按照預期在活動服務器上執行(PHP 5.2.12/5.0.89),返回剛剛插入的AUTO_INCREMENT行的值。這個函數是整個站點使用的數據庫類的一部分,其中「$ this - > _ private ['cn']」是資源鏈接。
public function insert ($sql=false) {
@mysql_select_db($this->_private['db_name'], $this->_private['cn']);
$res = null;
if (false !== $sql) {
$query_obj = mysql_query($sql, $this->_private['cn']);
if ($query_obj)
$res = mysql_insert_id($this->_private['cn']);
}
return $res;
}
在開發服務器(5.3.5/5.1.54)上,返回值爲零。注 - 不爲空(如果查詢失敗,則返回),但爲零。我可以查看錶格並驗證是否已插入新行,並且自動增加字段已正確提前。字段值目前爲121288,所以它完全在PHP的整數範圍內。我甚至在一個簡單的頁面上重新創建了類的代碼,並得到了相同的結果。 mysql_error()表示沒有失敗。錯誤報告設置爲E_ALL,而不是在那裏窺視。
ARGH!有任何想法嗎?
查詢您應該提交錯誤報告。聽起來你已經完成了盡職調查,而且看起來並不是你的錯。它可能已經在追蹤器中,甚至可能有解決方法。 – 2011-02-09 23:09:05