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

jer*_*son 51 php mysql

使用PHP,我试图删除一条记录,但我想检查它是否成功.成功归来的是什么DELETE FROM foo where bar = 'stuff'

或者,您是否知道检查DELETE是否成功的任何其他方法?或者我最好只是在删除它之前确保该行存在?我想尽可能避免另一个查询.

Pao*_*ino 59

假设您使用的是mysql_query:

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

如果您使用的是PDO :: exec,那么手册会说:

PDO :: exec()返回由您发出的SQL语句修改或删除的行数.如果没有行受到影响,PDO :: exec()将返回0.

不想回答snipe,但由于这被选为答案,我应该注意,TRUE即使查询实际上没有删除任何东西,mysql_query也会返回.您应该用它mysql_affected_rows来检查.

  • "不想回答狙击"哦不!不是我宝贵的宝贵点!=) (4认同)
  • 如果您使用 PDO::execute() 来获取受影响的行数,您应该使用 PDO::rowCount() (2认同)

big*_*mus 37

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

[使用] mysql_affected_rows()查找DELETE,INSERT,REPLACE或UPDATE语句影响的行数.

  • 打我!检查这是> 0是有帮助的,因为如果查询正确形成但没有删除任何内容,mysql_query()将返回TRUE. (2认同)

小智 15

您可以尝试使用您的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>";
}
Run Code Online (Sandbox Code Playgroud)