удалить не работает с pdo

0

Следующий код не работает, хотя я его протестировал, поставив его на странице. Чтобы сделать это ясно сразу после этого запроса, я делаю запрос select, чтобы отобразить всех пользователей в БД.

$db->query("DELETE FROM Projet_Client WHERE username = '$_GET[d]'");
echo "<div class='alert alert-success text-middle'><strong>Succès</strong>, le 
client a été supprimé.</div>";

Вот "эхо" запроса, чтобы показать вам, как он выглядит:

DELETE FROM Projet_Client 
WHERE 
username = 'a75ea99ce47306ec259d4c905bb9c3f762a531ee'

(Я использую свой sql). Спасибо.

Я изменил код, и он выглядит так:

    $db->setAttribute(PDO::ATTR_EMULATE_PREPARES,false);
    $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING );
    try {
        $stmt = $db->prepare('DELETE FROM Projet_Client WHERE username= :username');
        $stmt->bindParam(':username', $_GET['d']); 
        $stmt->execute();

    } catch(Exception $e){
            echo 'Exception -> ';
            var_dump($e->getMessage());
    }

Однако никакое исключение не бросается.

Проблема решена. Мне пришлось изменить ограничение с помощью внешнего ключа: ON DELETE = CASCADE

  • 2
    Ваш код уязвим для атак SQL-инъекций . Вы должны использовать подготовленные операторы mysqli или PDO со связанными параметрами, как описано в этом посте .
  • 0
    $_GET[d] недействителен? это должно быть $_GET['d'] или $_GET["d"] . Как уже упоминал Доминик, вы должны использовать подготовленные заявления, чтобы сделать это.
Показать ещё 11 комментариев
Теги:
sql-delete
pdo

1 ответ

0

Вы уверены, что запрос выполняется правильно? Ваш запрос выглядит хорошо для меня.

Возможно, вы можете попытаться повторить ошибку (если она есть), используя это:

if ($conn->query($sql) !== false) {
echo "Record deleted successfully";} else {
echo "Error deleting record: " . $conn->error;

}

  • 0
    Спасибо, я пытаюсь увидеть, возвращает ли это что-то
  • 0
    PDO :: query возвращает PDOStatement случае успеха, не true Вам нужно будет использовать $conn->query($sql) !== false .
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню