如果不应该,SQL的计算结果为true

时间:2013-04-09 23:14:01

标签: sql

我有这个SQL代码

$passwordQuery = mysql_query("UPDATE `Medarbejder` SET `password` = '$password' WHERE `login` = '$login' AND `password` = '$oldPassword'")or die(mysql_error());
            if($passwordQuery){

无论$ oldPassword是否等于password,它的评估结果为真,这很烦人,我无法弄清楚原因。

5 个答案:

答案 0 :(得分:2)

我认为mysql_query无论是否更新行都会返回TRUE。根据手册所说,它只会在出错时返回FALSE

  

对于其他类型的SQL语句,INSERT,UPDATE,DELETE,DROP等,   mysql_query()成功时返回TRUE,错误时返回FALSE。

我认为你想要的是检查更新计数 - 除了错误检查

答案 1 :(得分:1)

如果要检查受影响的行数,可以在PHP代码中使用mysql_affected_rows

For Reference

答案 2 :(得分:0)

我可能错了,但即使没有找到记录,您的更新也不会失败,他只会更新! : - )

答案 3 :(得分:0)

mysql_affected_rows将在更新后返回受影响的行数。

答案 4 :(得分:0)

这样做

$passwordQuery = mysql_query("UPDATE `Medarbejder` SET `password` = '$password' WHERE `login` = '$login' AND `password` = '$oldPassword'")or die(mysql_error());
        if(mysql_affected_rows()==0){
        //alternative to false return of query
        }
        else if(mysql_affected_rows()>0){
        //alternative to true return of query
        }