Не работают sql запросы

Рейтинг: 1Ответов: 1Опубликовано: 21.06.2023

На БД не вставляются изменения и при запросе возникает ошибка. Если не сохранять запрос в переменную, то всё работает

<?
$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

Скорее всего, ошибка в применении функции 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);