【问题标题】:return true if mysql update statement excute and false when no row was updated如果 mysql 更新语句执行则返回 true,当没有更新行时返回 false
【发布时间】:2013-11-17 23:26:01
【问题描述】:

我有一个 mysql 更新语句,但是当更新行和没有更新行时它返回 true。

我想知道行是否被更改。

这是我的查询:

$q=mysql_query("UPDATE results set marks='$mark' and total='$total'
                 where result_id='$rid'");


if($q){
      echo 'rows updated';
   }
else{
      echo 'No row was updated';
   }

它总是打印“行已更新”消息,无论是否没有更新记录。

有什么帮助吗?

【问题讨论】:

  • mysql_affected_rows()

标签: php mysql sql


【解决方案1】:

你可能想要mysql_affected_rows()

来自文档:

通过与 link_identifier 关联的最后一个 INSERT、UPDATE、REPLACE 或 DELETE 查询获取受影响的行数。

请注意,mysql_* 函数已被弃用——我建议您改用MySQLiPDO(并开始使用参数化查询,以免受到SQL injection 的影响)

【讨论】:

    【解决方案2】:

    首先,正确的语法是:

    UPDATE results
        set marks='$mark', total='$total'
        where result_id='$rid';
    

    您可能想将其表述为:

    UPDATE results
        set marks='$mark', total='$total'
        where result_id='$rid' and marks <> '$mark' and total <> '$total';
    

    我认为不同版本的 MySQL 在是否报告所选行更改方面存在差异,即使新版本的值与旧值相同。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-13
      • 1970-01-01
      • 2018-12-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多