php - mysql_affected_rows 返回 0 但数据库已更改

标签 php mysql sql-update

我遇到了函数 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/

相关文章:

php - gettext() 中的多个复数形式

php - 如何使用mysql从php中的jquery自动完成框获取字符串数据

php - SonataMediaBundle 的公共(public)和私有(private)媒体上传到不同的文件夹(网络和私有(private))

php - 将数据以加密形式存储在数据库中,并检索

php - 如何实现跨两个表的搜索查询?

java - Spring 数据库负载测试 : How to release connections

php - 通过从表中传递多个分隔的逗号 id 获取记录,其中 id 在 mysql 表中也是逗号分隔的

php - 仅更新 1 行 While 循环错误

sql - 找不到多部分标识符的错误

mysql - 从另一个表更新列 - mySQL 3.5.2