我有这个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
}