Query Failed У вас есть ошибка в синтаксисе SQL; проверьте правильность синтаксиса в руководстве, соответствующем вашей версии сервера MariaDB

У меня проблема с обновлением контента в базе данных. ошибка:

Query FailedYou have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'post_content = 'kjgljkkjhklj ', post_image = '45739895_2381062595269282_8123898' at line 1

это весь мой код:

if (isset($_GET['p_id'])) {
    $the_post_id = $_GET['p_id'];
}

$query = "SELECT * FROM posts WHERE post_id = $the_post_id";
$select_posts_by_id = mysqli_query($connection, $query);

while ($row = mysqli_fetch_assoc($select_posts_by_id)) {
    $post_id = $row['post_id'];
    $post_author = $row['post_author'];
    $post_title = $row['post_title'];
    $post_category_id = $row['post_category_id'];
    $post_status = $row['post_status'];
    $post_image = $row['post_image'];
    $post_content = $row['post_content'];
    $post_tags = $row['post_tags'];
    $post_comment = $row['post_comment_count'];
    $post_date = $row['post_date'];
}


// if update post button is clicked
if (isset($_POST['update_post'])) {

    $post_author = $_POST['post_author'];
    $post_title = $_POST['post_title'];
    $post_category_id = $_POST['post_category'];
    $post_status = $_POST['post_status'];
    $post_image = $_FILES['image']['name'];
    $post_image_temp = $_FILES['image']['tmp_name'];
    $post_content = $_POST['post_content'];
    $post_tags = $_POST['post_tags'];


    move_uploaded_file($post_image_temp, "../images/{$post_image}");

    if (empty($post_image)) {
        $query = "SELECT * FROM posts WHERE post_id = $the_post_id ";

    }

    $query = "UPDATE posts SET ";
    $query .= "post_title = '{$post_title}', ";
    $query .= "post_category_id = '{$post_category_id}', ";
    $query .= "post_date = now(), ";
    $query .= "post_author = '{$post_author}', ";
    $query .= "post_status = '{$post_status}', ";
    $query .= "post_tags = '{$post_tags}' ";
    $query .= "post_content = '{$post_content}', ";
    $query .= "post_image = '{$post_image}' ";
    $query .= "WHERE post_id = {$the_post_id}"; // this is from the get request


    $update_post = mysqli_query($connection, $query);

    confirmQuery($update_post);

}

это форма ниже:

<form action = "" method = "POST" enctype = "multipart/form-data">

    <div class = "form-group">
        <label for = "title">Post Title</label>
        <input value = "<?php echo $post_title; ?>" type = "text" name = "post_title" class = "form-control" required = "true">
    </div>

    <div class = "form-group">
        <label for = "post_category">Post Categories</label>
        <select name = "post_category" id = "" class = "form-control form-control-md">
            <?php 
                $query = "SELECT * FROM categories";
                $select_categories = mysqli_query($connection, $query);

                confirmQuery($select_categories); // this is from functions.php

                while ($row = mysqli_fetch_assoc($select_categories)) {
                        $cat_id = $row['cat_id'];
                        $cat_title = $row['cat_title'];

                        echo "<option value='{$cat_id}'>{$cat_title}</option>";
                    }   
             ?>
        </select>
    </div>

    <div class = "form-group">
        <label for = "author">Post Author</label>
        <input value = "<?php echo $post_author; ?>" type = "text" name = "post_author" class = "form-control" required = "true">
    </div>

    <div class = "form-group">
        <label for = "post_status">Post Status</label>
        <input value = "<?php echo $post_status; ?>" type = "text" name = "post_status" class = "form-control" required = "true">
    </div>

    <div class = "form-group">
        <label for = "image">Post Image</label>
        <img width = "100px" src = "../images/<?php echo $post_image; ?>">
        <input type = "file" name = "image" required = "true">
    </div>

    <div class = "form-group">
        <label for = "post_tags">Post Tags</label>
        <input value = "<?php echo $post_tags; ?>" type = "text" name = "post_tags" class = "form-control" required = "true">
    </div>

    <div class = "form-group">
        <label for = "post_content">Post Content</label> 
        <textarea name = "post_content" class = "form-control" id = "" cols = "30" rows = "10" required = "true">
            <?php echo $post_content; ?>
        </textarea>
    </div>

    <div class = "form-group">
        <input type = "submit" name = "update_post" class = "btn btn-primary" value = "Update Post">
    </div>
</form>

В вашем коде SQL отсутствует , после значений post_tags и post_image.

Jarzon 31.01.2019 04:20

@Jarzon и да, и нет, это не запятая после post_image, поскольку ГДЕ идет дальше

user10051234 31.01.2019 04:49

Это открыто для SQL-инъекций. Параметризовать.

user3783243 31.01.2019 05:25

так какого кода не хватает? Можете ли вы указать, какой код следует добавить? Благодарность :)

GDP 31.01.2019 07:32
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
4
1 235
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

FWIW, мне легче читать:

$query = "
UPDATE posts 
   SET post_title = '$post_title'
     , post_category_id = '$post_category_id'
     , post_date = now()
     , post_author = '$post_author'
     , post_status = '$post_status'
     , post_tags = '$post_tags'
     , post_content = '$post_content'
     , post_image = '$post_image'
 WHERE post_id = $the_post_id;
";

... но также важно заменить эти строки правильно параметризованным запросом

попробуй заменить

$query .= "WHERE post_id = {$the_post_id}";

с участием

$query .= "WHERE post_id = {$the_post_id} ";

Это должно сделать волшебство.

Другие вопросы по теме