Что возвращает успешный MySQL DELETE? Как проверить успешность DELETE?
Используя PHP, я пытаюсь удалить запись, но я хочу проверить, было ли это успешным или нет. Верно ли что-нибудь из успешного DELETE FROM foo where bar = 'stuff'
?
Альтернативно, знаете ли вы какие-либо другие способы проверить успешность DELETE? Или мне лучше просто убедиться, что строка существует, прежде чем я удалю ее? Я пытаюсь избежать другого запроса, если это возможно.
Ответы
Ответ 1
Предполагая, что вы используете 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
, чтобы проверить это.
Ответ 2
Кроме того, если вы заботитесь о количестве затронутых строк:
[Использовать] mysql_affected_rows(), чтобы узнать, сколько строк было затронуто операцией DELETE, INSERT, REPLACE или UPDATE.
Ответ 3
вы можете попробовать это для своего 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>";
}