#php #mysql #pdo
#php #mysql #pdo
Вопрос:
Прошу прощения, если об этом спрашивали раньше, но я не нашел ответа, который соответствует моим потребностям.
У меня есть подготовленная инструкция для удаления данных из таблицы с использованием пользовательского ввода:
$delete = $handler->prepare("DELETE FROM screenings WHERE
time = :time ORDER BY screeningid LIMIT 1; ");
$delete- >execute(array( ':time' => $screeningtime ));
Я пытаюсь добавить инструкцию if перед инструкцией delete, чтобы сначала проверить, завершается ли запись, и если это так, выполняет инструкцию delete, в противном случае выдает сообщение об ошибке.
до сих пор я пробовал:
if(empty($row['column'])) {
echo "error";
}else {
//delete statement here
}
но безрезультатно, сообщение об ошибке выводится во всех экземплярах
Комментарии:
1. Что такое
$row
?2. @PaulSpiegel Я внезапно понятия не имею, это был долгий день, я думаю, я пытался использовать $ screeningtime как $ row
Ответ №1:
Вам нужно будет выполнить SELECT, чтобы определить, существует ли строка.
Однако результат УДАЛЕНИЯ вернет количество затронутых строк, поэтому вы можете просто запустить его независимо, а затем проверить, были ли удалены 0, 1 или > 1 строки. Это было бы $delete->rowCount()
Комментарии:
1. Итак, могу ли я выполнить инструкцию delete, затем: ` if ($delete-> rowCount() > 0) { echo «Успех»; } else { echo «Сбой»; } `
2. Я добавил это ниже моей инструкции delete, однако, когда я тестирую результат, всегда «сбой»
3. @Raznok чтобы помочь в дальнейшем, я предлагаю вам обновить свой пост текущей версией кода, значением, которое вы передаете для
$screeningtime
, и некоторыми примерами строк из таблицы, по крайней мере, одна из которых должна соответствовать$screeningtime
Ответ №2:
<? Php
$delete->execute();
if ($delete->rowCount() >= 1)
echo 'ok';
else
echo 'error or not found';
Комментарии:
1. Чтобы уточнить, используя мой приведенный выше пример, я мог бы использовать ` $delete is_removed = $delete-> выполнить`?
2. @Raznok да. Вы можете
3.
execute
возвращает True при успешном выполнении, но это не будет означать, что что-либо было удалено, просто означает, что в самом запросе не было ошибок и он был выполнен на сервере БД. Если были выданы ошибки, то это вернет False