Используя PHP, я пытаюсь удалить запись, но я хочу проверить, было ли это успешным или нет. Верно ли что-нибудь из успешного DELETE FROM foo where bar = 'stuff'
?
В качестве альтернативы, знаете ли вы какие-либо другие способы проверить успешность DELETE? Или мне лучше просто убедиться, что строка существует, прежде чем я удалю ее? Я пытаюсь избежать другого запроса, если это возможно.
Предполагая, что вы используете 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
для проверки этого.
Кроме того, если вас беспокоит количество строк, которые были затронуты:
Использовать 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>"; }