首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >即使实际发生更新,mysql_affected_rows()也会为UPDATE语句返回0

即使实际发生更新,mysql_affected_rows()也会为UPDATE语句返回0
EN

Stack Overflow用户
提问于 2012-02-22 23:03:56
回答 9查看 30.1K关注 0票数 22

我正在尝试获取一个简单的mysql更新查询中受影响的行数。然而,当我运行下面的代码时,PHP的mysql_affected_rows()总是等于0。无论foo是否已经存在(在这种情况下,函数应该正确地返回0,因为没有更改任何行),或者foo当前是否等于某个其他整数(在这种情况下,函数应该返回1)。

代码语言:javascript
复制
$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

有什么想法吗?

EN

回答 9

Stack Overflow用户

发布于 2012-03-26 19:59:50

较新版本的MySQL足够智能,可以查看是否已完成修改。假设您启动了一条UPDATE语句:

代码语言:javascript
复制
UPDATE tb_Employee_Stats SET lazy = 1 WHERE ep_id = 1234

比方说,如果列的值已经是1;那么不会发生更新过程,因此mysql_affected_rows()将返回0;否则,如果列lazy有其他值而不是1,则返回1。除了人为错误之外,没有其他的可能性。

票数 22
EN

Stack Overflow用户

发布于 2018-02-12 20:03:46

以下注意事项将对您有所帮助。

mysql_affected_rows()返回

  • +0:未更新或插入行(可能是因为该行已存在,但在更新过程中未实际更改任何字段值)。
  • +1:已插入行
  • +2:已更新行
  • -1:以防出错。

mysqli affected rows developer notes

票数 2
EN

Stack Overflow用户

发布于 2012-03-24 00:23:21

您是否尝试过直接使用MySQL函数ROW_COUNT

代码语言:javascript
复制
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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9397291

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档