我正在維護一個運行時間大約爲1年的服務器。以前沒有人會錯。但是,突然間,mysql_insert_id()中有一個錯誤,它返回0,而不是數據庫中的普通行ID。這是代碼的核心。mysql_insert_id()很少返回0
$sql = "INSERT INTO $db_table (name,email) VALUES('$name','$email')";
mysql_query($sql);
$current = mysql_insert_id();
還要注意,即使是在代碼中沒有變化,程序順利再次運行錯誤發生之後。我覺得很奇怪。
這是我的可能解釋。因爲我在一個公共服務器上託管,其中很多使用相同的MYSQL服務器。那麼當mysql_query($sql)
時,服務器會交換進程並讓另一個人運行另一個SQL命令(可能是例如SELECT
語句),並且在它們執行後,它會交換回我自己的代碼並繼續執行,結果爲0?
請幫忙。謝謝。
黃油方式,使用參數和基於交易的查詢使用PDO擺脫做這種情況。 –
這是php的問題,請標記爲php –
我的老闆告訴我不要改變儘可能多的東西,只是解決這裏的問題。由於有成千上萬的頁面具有這種設置。只有一頁暫時死亡像這樣。 – CHANist