0

我有一个 mysql update 语句,但是当更新行并且没有更新行时它返回 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';
   }

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

有什么帮助吗?

4

2 回答 2

2

你可能想要mysql_affected_rows()

从文档中:

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

请注意,mysql_*函数已被弃用——我建议您改用MySQLiPDO(并开始使用参数化查询,以防止SQL 注入

于 2013-11-06T16:08:32.137 回答
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 在它们是否报告所选行更改方面有所不同,即使新版本的值与旧值相同。

于 2013-11-06T16:08:23.760 回答