Что возвращает успешный MySQL DELETE? Как проверить, если удаление было успешно? - PullRequest
50 голосов
/ 28 мая 2009

Используя PHP, я пытаюсь удалить запись, но я хочу проверить, была ли она успешной или нет. Что-нибудь возвращается из успешного DELETE FROM foo where bar = 'stuff'?

В качестве альтернативы, знаете ли вы какие-либо другие способы проверки успешности удаления? Или мне лучше просто убедиться, что строка существует перед тем, как ее удалить? Я пытаюсь избежать другого запроса, если это возможно.

Ответы [ 4 ]

57 голосов
/ 28 мая 2009

Если вы используете mysql_query :

Для операторов SQL другого типа: INSERT, UPDATE, DELETE , DROP и т. Д. Mysql_query () возвращает TRUE при успехе или FALSE при ошибке.

Если вы используете PDO :: exec , то в руководстве говорится следующее:

PDO :: exec () возвращает количество строк, которые были изменены или удалены с помощью введенного вами оператора SQL. Если ни одна строка не была затронута, PDO :: exec () возвращает 0.

Не хочу отвечать snipe, но так как он был выбран в качестве ответа, я должен отметить, что mysql_query вернет TRUE, даже если запрос на самом деле ничего не удалял. Вы должны использовать mysql_affected_rows, чтобы проверить это.

36 голосов
/ 28 мая 2009

Кроме того, если вас волнует количество затронутых строк:

[Использовать] mysql_affered_rows () , чтобы узнать, на сколько строк повлиял оператор DELETE, INSERT, REPLACE или UPDATE.

15 голосов
/ 07 сентября 2010

вы можете попробовать это для своего 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>";
}
0 голосов
/ 14 июня 2018

Для других типов операторов SQL , INSERT, UPDATE, DELETE, DROP и т. Д., mysql_query() возвращает ИСТИНА в случае успеха или FALSE при ошибке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...