@alexey_khorin

Почему не обновляется запись из бд через pdo?

Надо чтобы обновлялась запись ,все проходит успешно,никаких ошибок не вылезает,но запись не меняется
<?php
include 'functions.php';
$pdo = pdo_connect_mysql();
$msg = '';

if (isset($_GET['id'])) {
    if (!empty($_POST)) {
        
        $id = isset($_POST['id']) ? $_POST['id'] : NULL;
        $name = isset($_POST['name']) ? $_POST['name'] : '';
        $adress = isset($_POST['adress']) ? $_POST['adress'] : '';
        $num = isset($_POST['num']) ? $_POST['num'] : '';
        $duty = isset($_POST['duty']) ? $_POST['duty'] : '';
       
       
        $stmt = $pdo->prepare('UPDATE `civilman` SET `id` = ?, `name` = ?, `adress` = ?, `num` = ?, `duty` = ?,  WHERE id = ?');
        $stmt->execute([$id, $name, $adress, $num, $duty, $_GET['id']]);
        $msg = 'Запись изменена!';
    }
  
    $stmt = $pdo->prepare('SELECT * FROM civilman WHERE id = ?');
    $stmt->execute([$_GET['id']]);
    $contact = $stmt->fetch(PDO::FETCH_ASSOC);
    if (!$contact) {
        exit('Запись с таким номером не найдена');
    }
} else {
    exit('Не указан номер!');
}
?>
<?=template_header('Обновить')?>

<div class="content update">
    <h2>Обновление плательщика #<?=$contact['id']?></h2>
    <form action="update.php?id=<?=$contact['id']?>" method="post">
        <label for="id">ID</label>
        <label for="name">ФИО</label>
        <input type="text" name="id" placeholder="1" value="<?=$contact['id']?>" id="id">
        <input type="text" name="name" placeholder="Иванов.И.И." value="<?=$contact['name']?>" id="name">
        <label for="adress">Адрес</label>
        <label for="number">Телефон</label>
        <input type="text" name="adress" placeholder="г.Москва,ул.Кремлевская,д.5" value="<?=$contact['adress']?>" id="adress">
        <input type="text" name="num" placeholder="89xxxxxxxxx" value="<?=$contact['num']?>" id="num">
        <label for="duty">Долг</label>
        <label for="created"></label>
        <input type="text" name="duty" placeholder="Сумма долга" value="<?=$contact['duty']?>" id="duty">
       
        <input type="submit" value="Обновить">
    </form>
    <?php if ($msg): ?>
    <p><?=$msg?></p>
    <?php endif; ?>
</div>

<?=template_footer()?>
  • Вопрос задан
  • 132 просмотра
Пригласить эксперта
Ответы на вопрос 2
Melkij
@Melkij
PostgreSQL DBA
Поставьте PDO::ATTR_ERRMODE в адекватный PDO::ERRMODE_EXCEPTION при подключении к базе.

Хинт: синтаксическая ошибка в запросе.
Ответ написан
ThunderCat
@ThunderCat Куратор тега PHP
{PHP, MySql, HTML, JS, CSS} developer
Вообще странная логика, по логике надо СНАЧАЛА проверить есть ли такая запись, и далее уже делать апдейт, у вас же сначала апдейт, потом проверка... Л - логика.

Так как вы все равно наверняка не пользуетесь системой исключений при вызове запросов, лучше поставьте PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING, так хотя бы варнинги от запросов увидите.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы