Web

PHP REST API POSTMAN. Фатальная ошибка Uncaught PDOException: SQLSTATE[42000]: Синтаксическая ошибка или нарушение доступа: 1064 У вас ошибка в синтаксисе SQL

Я получаю эту ошибку в почтовом клиенте при работе с PHP REST API:

Неустранимая ошибка : Uncaught PDOException: SQLSTATE [42000]: синтаксическая ошибка или нарушение прав доступа: 1064 У вас есть ошибка в синтаксисе SQL; проверьте руководство, соответствующее вашей версии сервера MariaDB, на предмет правильного синтаксиса для использования с'isting_name = 'name', address = 'test', po ... 'в строке 2 в C: \ xampp \ htdocs \ project \ dTb \ models \ Listing.php: 137 Трассировка стека:

 

Вот моя модель

// Создание  Post

public function create(){

// запрос

$query = 'INSERT INTO ' . $this->table . 

            'SET

            listing_name = :listing_name,

            address = :address,

            postal_code = :postal_code,

            google_id = :google_id,

            website = :website,

            tag_array = :tag_array,

            area_array = :area_array';

            // подготовка выражения

            $stmt = $this->conn->prepare($query);

            // очитска данных

            $this->listing_name = htmlspecialchars(strip_tags($this->listing_name));

            $this->address = htmlspecialchars(strip_tags($this->address));

            $this->postal_code = htmlspecialchars(strip_tags($this->postal_code));

            $this->google_id = htmlspecialchars(strip_tags($this->google_id));

            $this->website = htmlspecialchars(strip_tags($this->website));

            $this->tag_array = htmlspecialchars(strip_tags($this->tag_array));

            $this->area_array = htmlspecialchars(strip_tags($this->area_array));

            // привязка данных

            $stmt->bindParam(':listing_name', $this->listing_name);

            $stmt->bindParam(':address', $this->address);

            $stmt->bindParam(':postal_code', $this->postal_code);

            $stmt->bindParam(':google_id', $this->google_id);

            $stmt->bindParam(':website', $this->website);

            $stmt->bindParam(':tag_array', $this->tag_array);

            $stmt->bindParam(':area_array', $this->area_array);

            // выполнение запроса

            if($stmt->execute()) {

                return true;

            }

            printf("Error: %s ", $stmt->error);

}

 

create.php

<?php 

// заголовки

header('Access-Control-Allow-Origin: *');

header('Access-Control-Allow-Methods: POST');

header('Access-Control-Allow-Headers: Access-Control-Allow-Headers, Access-Control-Allow-Methods, Authorization, X-Requested-With');

include_once '../../config/Database.php';

include_once '../../models/Listing.php';

// инициализация БД и соединения

$database = new Database();

$db = $database->connect();

// инициализация списка объектов

$listing = new Listing($db);

// получение сырых POST данных

$data = json_decode(file_get_contents("php://input"));

$listing->listing_name = $data->listing_name;

$listing->address = $data->address;

$listing->postal_code = $data->postal_code;

$listing->google_id = $data->google_id;

$listing->website = $data->website;

$listing->tag_array = $data->tag_array;

$listing->area_array = $data->area_array;

// создание листинга

if($listing->create()){

    echo json_encode(

        array('message' => 'Post создан)

    );

} else {

    echo json_encode(

        array('message' => 'Список не создан')

    );

}

  

Вывод:

{

"listing_name": "test name",

"address": "test address",

"postal_code": "n12 345",

"google_id": "googleid",

"website": "website",

"tag_array": "tagarray, array",

"area_array": "areaarray, array"

}

 

Ответ 1

Попробуйте добавить пробел перед "SET" в своем запросе

$query = 'INSERT INTO '. 

            $this->table. 

            ' SET

            listing_name = :listing_name,

Схожие статьи

Что такое локальное хранилище и как его используют в программировании
Web

Что такое локальное хранилище и как его используют в программировании

Web

Как преобразовать XML в массив PHP

Как сделать слайдер в HTML на своем сайте: краткая инструкция
Web

Как сделать слайдер в HTML на своем сайте: краткая инструкция

Как управлять браузером без мышки: список горячих клавиш и команд
Web

Как управлять браузером без мышки: список горячих клавиш и команд