В чем причина неполучения информации с формы в базу данных?

  • 11 сентября 2023 г. 1:06
Ответы на вопрос 2
Одна из возможных причин неполучения информации с формы в базу данных может быть неверно сформированный SQL-запрос. В данном коде значения переменных $author, $datep и $text_content подставляются непосредственно в запрос без кавычек, что может приводить к ошибкам, особенно если значения содержат специальные символы или пробелы.

Чтобы исправить эту проблему, необходимо заключить значения переменных в одинарные кавычки внутри SQL-запроса, например:

$pdo->query("INSERT INTO post (author, date_p, text_p) VALUES ('$author', '$datep', '$text_content');");

Также, для удобства и безопасности, рекомендуется использовать подготовленные выражения (prepared statements), чтобы избежать SQL-инъекций и правильно обрабатывать специальные символы. Пример использования подготовленного выражения:

$stmt = $pdo->prepare("INSERT INTO post (author, date_p, text_p) VALUES (?, ?, ?)");
$stmt->execute([$author, $datep, $text_content]);

Если после этих изменений данные по-прежнему не добавляются в базу данных, необходимо проверить права доступа к базе данных, а также наличие ошибок в логах сервера базы данных.
$q - запрос на добавление данных в таблицу post. 
Здесь переменные $author, $datep и $text_content используются для указания соответствующих значений в запросе.
Перед выполнением запроса, его выводим для проверки при помощи var_dump.
Далее меняем запрос, используя подготовленные выражения. Знаки ? вместо значений позволяют избежать прямого вставления значений в запрос и защищают от SQL-инъекций.
Далее выполняем подготовленный запрос, передавая значения в виде массива [$author, $datep, $text_content], при помощи метода execute.
Похожие вопросы