如果 mysql 更新语句执行则返回 true,当没有更新行时返回 false
Posted
技术标签:
【中文标题】如果 mysql 更新语句执行则返回 true,当没有更新行时返回 false【英文标题】:return true if mysql update statement excute and false when no row was updated 【发布时间】: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()
【参考方案1】:
你可能想要mysql_affected_rows()
。
来自文档:
通过与 link_identifier 关联的最后一个 INSERT、UPDATE、REPLACE 或 DELETE 查询获取受影响的行数。
请注意,mysql_*
函数已被弃用——我建议您改用MySQLi 或PDO(并开始使用参数化查询,以免受到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 在是否报告所选行更改方面存在差异,即使新版本的值与旧值相同。
【讨论】:
以上是关于如果 mysql 更新语句执行则返回 true,当没有更新行时返回 false的主要内容,如果未能解决你的问题,请参考以下文章