Подтвердить что ты не робот

Что возвращает успешный MySQL DELETE? Как проверить успешность DELETE?

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

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

4b9b3361

Ответ 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>";
}