@phpNoobIvan

Как выполнить запрос INSERT в php7.4?

html:
<form class="submission__applications-form" action="request.php" method="post" style="display: none; width: 500px; cursor:auto;" id="hidden">
                        <input class="submission__applications-form" type="text" name="name" placeholder="Имя" required>
                        <textarea class="textarea" name="textarea" cols="30" rows="10" placeholder="Цель Аренды" required></textarea>
                        <input id="phone_1" class="submission__applications-form" name="tel" type="text" required placeholder="Номер телефона">
                        <input class="submission__applications-form" type="text" name="date" id="datepicker" required placeholder="Дата">
                        <p class="rental__time">Время аренды:</p>
                        <div class="time__wrapper">
                            <div>
                                <label>Начало</label>
                                <input class="time" name="timeStart" type="time" required>
                            </div>
                            <div>
                                <label>Конец</label>
                                <input class="time" name="timeEnd" type="time" required>
                            </div>
                        </div>
                        <div class="checkbox__wrapper">
                            <label>У вас есть WhatsApp?</label>
                            <input type="checkbox" name="checkbox">
                        </div>
                        <input type="submit" name="submit" value="Отправить">
                    </form>


запрос
<?php

if (isset($_POST['submit'])) {
  require 'functions/connectdb.php';

  $name = trim(htmlspecialchars($_POST["name"]));
  $textarea = trim(htmlspecialchars($_POST["textarea"]));
  $tel = trim(htmlspecialchars($_POST["tel"]));
  $date = trim(htmlspecialchars($_POST["date"]));
  $timeStart = trim(htmlspecialchars($_POST["timeStart"]));
  $timeEnd = trim(htmlspecialchars($_POST["timeEnd"]));
  $checkbox = trim(htmlspecialchars($_POST["checkbox"]));


  $data = array('name' => $name, 'textarea' => $textarea, 'tel' => $tel, 'date' => $date, 'timeStart' => $timeStart, 'timeEnd' => $timeEnd, 'checkbox' => $checkbox);
  $query = $pdo->prepare("INSERT INTO `request`(`name`, `textarea`, `tel`, `date`, `timeStart`, `timeEnd`, `checkbox`) 
  VALUES (:name, :textarea, :tel, :date, :timeStart, :timeEnd, :checkbox)");
  $query->execute($data);
}


К базе данных подключается, но данные из формы не заносятся.
  • Вопрос задан
  • 351 просмотр
Решения вопроса 1
@Cyberjs
Мда, уже сутки помочь не могут человеку, вот правильный ответ рабочий:

if (isset($_POST['submit'])) {
require 'functions/connectdb.php';

$name = trim($_POST["name"]);
$textarea = trim($_POST["textarea"]);
$tel = trim($_POST["tel"]);
$date = trim($_POST["date"]);
$timeStart = trim($_POST["timeStart"]);
$timeEnd = trim($_POST["timeEnd"]);
$checkbox = trim($_POST["checkbox"]);


$data = array(
'name' => "$name",
'textarea' => "$textarea",
'tel' => "$tel",
'date' => "$date",
'timeStart' => "$timeStart",
'timeEnd' => "$timeEnd",
'checkbox' => "$checkbox",
);



$sql = "INSERT INTO request(name, textarea, tel, date, timeStart, timeEnd, checkbox)" .
" VALUES(:name, :textarea, :tel, :date, :timeStart, :timeEnd, :checkbox)";

$statement = $pdo->prepare($sql);
$statement->execute($data);

echo "Запись успешно создана!";
}
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
Fockker
@Fockker Куратор тега PHP
Потомок старинного рода Ипатьевых-Колотитьевых
РНР надо конфигурировать так, чтобы он всегда сообщал об ошибках.
В частности, при соединении с PDO, надо настраивать режим информирования об ошибках
$pdo->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

Ну и не забыть про ошибки РНР - при разработке они должны выводиться на экран.

Если ошибок нет, то либо до записи дело не доходит,и это выясняется отладкой, либо запись всё-таки есть, но проверяется неправильно. Также можно уточнить состояние PDO::ATTR_AUTOCOMMIT
Ответ написан
Комментировать
@402d
начинал с бейсика на УКНЦ в 1988
https://www.php.net/manual/ru/pdo.errorinfo.php
В таких случаях смотрят информацию об ошибке
Ответ написан
@steam_key_becplatno
https://www.php.net/manual/ru/pdo.prepared-stateme...
Лучше всего сделай запись лога в txt, и проверь приходят ли запрос в php.
В sql должен идти запрос со всеми столбца и данными для них.
Сам метод вы усложнили.
Лучше всего сразу переходить на php 8.1, если есть возможность.
И согласен с людьми выше, пользователям должны выводится ошибки или сообщение об успешной отправки.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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