Не работают sql запросы
На БД не вставляются изменения и при запросе возникает ошибка. Если не сохранять запрос в переменную, то всё работает
<?
$message = $_POST["text"];
$connect = mysqli_connect("localhost", "root2", "", "todolist");
if ($connect === false) die("Ошибка: Невозможно подключиться к MySQL " . mysqli_connect_error());
mysqli_query($connect, mysqli_real_escape_string($connect, "INSERT INTO `todo` (`id`, `text`) VALUES (NULL, $message);"));
$id = mysqli_query($connect, mysqli_real_escape_string($connect, "SELECT `id` FROM `todo` ORDER BY `id` DESC LIMIT 1;"));
$template = '<li class="todo__list-item" id="' . $id . '"><p class="todo__list-text">' . $message . '</p> <button class="todo__trash-button" id="' . $id . '"><img src="../blocks/todo/images/trash.svg"alt="trash"class="todo__check"/></button></li>';
mysqli_close($connect);
echo $template;
Ответы (1 шт):
Автор решения: Dmitrii Malygin
→ Ссылка
Скорее всего, ошибка в применении функции mysqli_real_escape_string. Ей желательно экранировать значениям строковых типов, а не целые запросы или выражения SQL.
Попробуй использовать следующий код:
$message = $_POST["text"];
$connect = mysqli_connect("localhost", "root2", "", "todolist");
if ($connect === false) {
die("Ошибка: Невозможно подключиться к MySQL " . mysqli_connect_error());
}
$message = mysqli_real_escape_string($connect, $message);
$query = "INSERT INTO `todo` (`id`, `text`) VALUES (NULL, '$message')";
mysqli_query($connect, $query);
$id_query = "SELECT `id` FROM `todo` ORDER BY `id` DESC LIMIT 1";
$result = mysqli_query($connect, $id_query);
if ($result && mysqli_num_rows($result) > 0) {
$row = mysqli_fetch_assoc($result);
$id = $row['id'];
$template = '<li class="todo__list-item" id="' . $id . '"><p class="todo__list-text">' . $message . '</p> <button class="todo__trash-button" id="' . $id . '"><img src="../blocks/todo/images/trash.svg"alt="trash"class="todo__check"/></button></li>';
echo $template;
} else {
echo "Ошибка при получении ID";
}
mysqli_close($connect);