SQL在不应该计算为真时计算为真

  • 本文关键字:计算 不应该 SQL sql
  • 更新时间 :
  • 英文 :


我有这个SQL代码

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

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

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

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

我认为除了错误检查之外,您还需要检查更新计数

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

参考

我可能是错的,但你的更新不会失败,即使没有发现记录,他只会更新什么!: -)

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

像这样做

$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
        }

最新更新