@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, так хотя бы варнинги от запросов увидите.
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
ИТЦ Аусферр Магнитогорск
от 100 000 до 160 000 ₽
25 апр. 2024, в 09:29
2500 руб./за проект
25 апр. 2024, в 09:27
4000 руб./за проект
25 апр. 2024, в 09:20
10000 руб./за проект