我遇到了函数 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";
?>
如果我转到第1页,数据库已更新,N为1,一切正常。
如果我将 UPDATE 语句更改为 SET a=5,然后重新加载页面,数据库已更新,N 为 1,没问题。
但是,如果我将 UPDATE 更改为 SET a=6,则转到 page2,然后返回 page1,然后数据库再次正确更新,但在这种情况下 N 为 0。为什么 mysql_affected_rows 仅返回 0在这种情况下?
最佳答案
mysql_affected_rows 仅适用于刚刚在执行脚本中运行的查询(如果我没记错的话。)一旦转到第 2 页,然后重新加载第 1 页,就不会进行任何更改,因为它们是第一次进行的。
关于php - mysql_affected_rows 返回 0 但数据库已更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38902357/