0
我正在經歷一個奇怪的行爲,即使數據庫中的寄存器更改,函數mysql_affected_rows返回0。mysql_affected_rows返回0,但數據庫已更改
我已經將問題簡化爲最簡單的事情,所以您可以輕鬆地重現它。
在一方面我有一個文件(page1.php中)用下面的代碼,簡單地在數據庫中的更新寄存器的值:
<?php
mysql_connect('localhost', 'dbu', 'pass');
mysql_select_db('db');
$stmt="UPDATE aa SET a=4 WHERE id=0";
echo $stmt;
mysql_query($stmt);
$n = mysql_affected_rows();
echo "<br>N:".$n;
?>
在另一方面,我有另一頁(第2頁.PHP)與此無關的任意代碼:
<?php
echo "HELLO";
?>
如果我去的第1頁,更新數據庫,N爲1,一切正常。
如果我將UPDATE語句更改爲SET a = 5,然後重新加載頁面,數據庫更新,則N爲1,表示罰款。
但是,如果我將UPDATE更改爲SET a = 6,那麼我轉到page2,然後返回到page1,然後再次正確更新數據庫,但在這種情況下N爲0。爲什麼mysql_affected_rows返回0只有在這種情況下?
賓果,這是我的想法以及..除非OP更改更新查詢中的值,它會在第一次運行後顯示總是零受影響的行 –
查詢在第1頁,以及mysql_affected_rows,所以進行了更改。實際上,數據庫已更新,但此功能並未反映此情況。爲什麼? – Victor
@Víctor「受影響」的行是已更改的行,而不是已匹配的行;儘管通常有一個連接設置可以改變它。 – Uueerdo