我正在尝试获取一个简单的mysql更新查询中受影响的行数。然而,当我运行下面的代码时,PHP的mysql_affected_rows()总是等于0。无论foo是否已经存在(在这种情况下,函数应该正确地返回0,因为没有更改任何行),或者foo当前是否等于某个其他整数(在这种情况下,函数应该返回1)。
$updateQuery = "UPDATE myTable SET foo=1 WHERE bar=2";
mysql_query($updateQuery);
if (mysql_affected_rows() > 0) {
echo "affected!";
}
else {
echo "not affected"; // always prints not affected
}
UPDATE语句本身是有效的。INT会在我的数据库中发生变化。我还仔细检查了数据库连接是否事先关闭或是否有什么奇怪的地方。请记住,mysql_affected_rows不一定要求您传递连接链接标识符,尽管我也尝试过这样做。
该函数的详细信息:mysql_affected_rows
有什么想法吗?
发布于 2012-03-26 19:59:50
较新版本的MySQL足够智能,可以查看是否已完成修改。假设您启动了一条UPDATE语句:
UPDATE tb_Employee_Stats SET lazy = 1 WHERE ep_id = 1234
比方说,如果列的值已经是1;那么不会发生更新过程,因此mysql_affected_rows()将返回0;否则,如果列lazy有其他值而不是1,则返回1。除了人为错误之外,没有其他的可能性。
发布于 2018-02-12 20:03:46
以下注意事项将对您有所帮助。
mysql_affected_rows()返回
发布于 2012-03-24 00:23:21
您是否尝试过直接使用MySQL函数ROW_COUNT
?
mysql_query('UPDATE myTable SET foo = 1 WHERE bar = 2');
if(mysql_result(mysql_query('SELECT ROW_COUNT()'), 0, 0)) {
print "updated";
}
else {
print "no updates made";
}
有关使用ROW_COUNT
和其他MySQL信息功能的更多信息,请访问:http://dev.mysql.com/doc/refman/5.0/en/information-functions.html#function_row-count
https://stackoverflow.com/questions/9397291
复制相似问题