我有一个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';
}
它总是打印“行更新”消息,无论是否更新记录。
任何帮助PLZ?
答案 0 :(得分:2)
您可能需要mysql_affected_rows()
代替。
来自文档:
通过与link_identifier关联的上一次INSERT, UPDATE ,REPLACE或DELETE查询获取受影响的行数。
请注意,mysql_*
函数已弃用 - 我建议您切换到MySQLi或PDO(并开始使用参数化查询,以免SQL injection)< / p>
答案 1 :(得分:0)
首先,正确的语法是:
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在报告所选行是否发生变化方面存在差异,即使新版本的值与旧值相同也是如此。