0

我有这个 SQL 代码

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

而且无论 $oldPassword 是否等于password或不等于,它的计算结果都是 true,这很烦人,我不知道为什么。

4

5 回答 5

2

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

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

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

于 2013-04-09T23:18:05.320 回答
1

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

以供参考

于 2013-04-09T23:20:47.167 回答
0

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

于 2013-04-09T23:16:48.647 回答
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
        }
于 2013-04-09T23:28:00.793 回答
0

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

于 2013-04-09T23:20:24.493 回答