成功的MySQL DELETE返回什么?如何检查DELETE是否成功?

问题描述:

使用PHP,我试图删除一条记录,但我想检查它是否成功。是否成功返回DELETE FROM foo where bar = 'stuff'成功的MySQL DELETE返回什么?如何检查DELETE是否成功?

或者,您是否知道其他方法来检查DELETE是否成功?或者我最好在确定行存在之前删除它?如果可能,我试图避免另一个查询。

假设你正在使用mysql_query

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

如果使用PDO::exec,则手册上说的:

PDO :: EXEC()返回由你发出的SQL语句进行修改或删除的行数。如果没有行受到影响,PDO :: EXEC()返回0

不想回答鹬,但因为这被选为答案,我要指出的mysql_query将返回TRUE即使查询并没有真正删除任何东西。你应该使用mysql_affected_rows来检查。

+4

“不想回答鹬”哦,不!不是我宝贵的宝贵点! =) – biggusjimmus 2009-05-28 19:11:01

+0

+1 for mysql_affected_rows – 2013-06-11 09:28:23

此外,如果你关心受到影响的行数:

[使用方法] mysql_affected_rows()来找出有多少行受到影响由DELETE,INSERT,REPLACE或UPDATE语句。

你可以试试这个为你的PHP代码,放在您的查询后运行:

if (mysql_affected_rows() > 0) { 
    echo "You have successfully updated your data.<br><br>"; 
} 
else { 
    echo "The data you submitted matched the current data so nothing was changed.<br><br>"; 
}