我遇到函数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;
?>
另一方面,我有另一个页面(page2.php)与这个任意不相关的代码:
<?php
echo "HELLO";
?>
如果我转到page1,数据库会更新,N为1,一切正常。
如果我将UPDATE语句更改为SET a = 5然后重新加载页面,则更新数据库,N为1,很好。
但是,如果我将UPDATE更改为SET a = 6,那么我转到page2,然后返回page1,然后再次正确更新数据库但是在这种情况下N为0.为什么mysql_affected_rows只返回0在这种情况下?
答案 0 :(得分:2)
mysql_affected_rows仅适用于刚刚在执行脚本中运行的查询(如果我没记错的话。)一旦你转到第2页,然后重新加载第1页,就不会进行任何更改,因为它们是第一次进行的。