What does a successful MySQL DELETE return? How to check if DELETE was successful?
PhpMysqlPhp Problem Overview
Using PHP, I am trying to delete a record, but I want to check if it was successful or not. Is anything returned from a successful DELETE FROM foo where bar = 'stuff'
?
Alternatively, do you know any other ways to check if a DELETE was successful? Or am I better off just making sure the row exists before I delete it? I am trying to avoid another query if possible.
Php Solutions
Solution 1 - Php
Assuming you are using mysql_query:
> For other type of SQL statements, INSERT, UPDATE, DELETE, DROP, etc, mysql_query() returns TRUE on success or FALSE on error.
If you are using PDO::exec, then the manual says this:
> PDO::exec() returns the number of rows that were modified or deleted by the SQL statement you issued. If no rows were affected, PDO::exec() returns 0.
Don't want to answer snipe, but since this was selected as the answer, I should note that mysql_query will return TRUE
even if the query did not actually remove anything. You should use mysql_affected_rows
to check for that.
Solution 2 - Php
Additionally, if you care about the number of rows that were affected:
>[Use] http://us.php.net/manual/en/function.mysql-affected-rows.php">mysql\_affected\_rows()</a> to find out how many rows were affected by a DELETE, INSERT, REPLACE, or UPDATE statement.
Solution 3 - Php
you could try this for your php code, placed after your query runs:
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>";
}
Solution 4 - Php
For other types of SQL statements, INSERT
, UPDATE
, DELETE
, DROP
, etc, mysql_query()
returns TRUE on success or FALSE on error.