【问题标题】:Possible return values for mysql_affected_rows()mysql_affected_rows() 的可能返回值
【发布时间】:2013-06-10 21:37:45
【问题描述】:

谁能告诉我 php 中函数 mysql_affected_rows() (while update) 的所有可能返回值是什么?还有返回值是在什么情况下的?

如果更新查询没有更新任何内容或出错时停止。它会返回 -1 还是 0?这是我的问题?

【问题讨论】:

  • 如果您查看问题的右侧,您会看到“相关”,您的问题已经得到答复。而且你多次打开同一个问题,这真的不是一件好事。
  • the manual page 真的那么难读吗?它有一个很大的部分,标题为“返回值”。
  • 另外,当您在手册页上时,请注意顶部的红色大框,上面写着您应该避免使用 mysql_xxx() 函数。
  • 如果更新查询没有更新任何内容,它会返回 -1 还是 0?这是我的问题?
  • @VinothBabu 如果更新查询失败,它将返回 -1。

标签: php mysql


【解决方案1】:
  1. www.google.com
  2. mysql_affected_rows,搜索
  3. http://php.net/manual/en/function.mysql-affected-rows.php

成功时返回受影响的行数,如果最后一个则返回 -1 查询失败。

如果最后一个查询是没有 WHERE 子句的 DELETE 查询,则所有 记录将从表中删除,但此函数将 使用 4.1.2 之前的 MySQL 版本返回零。

当使用 UPDATE 时,MySQL 不会更新新值所在的列 与旧值相同。这创造了一种可能性 mysql_affected_rows() 实际上可能不等于行数 匹配的,只有真正受到影响的行数 查询。

REPLACE 语句首先删除与主记录相同的记录 键,然后插入新记录。此函数返回数字 删除记录数加上插入记录数。

在“INSERT ... ON DUPLICATE KEY UPDATE”查询的情况下, 如果执行了插入,则返回值为 1,或更新为 2 现有行。

重要:

不要 use mysql_* 已弃用

【讨论】:

    【解决方案2】:

    来自Docs

    成功时返回受影响的行数,如果最后一个查询失败则返回 -1。

    如果最后一个查询是没有 WHERE 子句的 DELETE 查询,则所有记录都将从表中删除,但对于 4.1.2 之前的 MySQL 版本,此函数将返回零。 使用 UPDATE 时,MySQL 不会更新新值与旧值相同的列。这会导致 mysql_affected_rows() 实际上可能不等于匹配的行数,而只是实际受查询影响的行数。

    REPLACE 语句首先删除具有相同主键的记录,然后插入新记录。该函数返回删除记录数加上插入记录数。

    在“INSERT ... ON DUPLICATE KEY UPDATE”查询的情况下,如果执行了插入,则返回值为 1,如果更新现有行,则返回值为 2。

    【讨论】:

      猜你喜欢
      • 2013-06-10
      • 1970-01-01
      • 2012-08-14
      • 1970-01-01
      • 2018-07-29
      • 2011-02-19
      • 2012-02-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多