Fatal error: Uncaught PDOException: SQLSTATE[42000]: Syntax error or access violation: 1064

218
06 июня 2022, 04:40

You have an error in your SQL syntax; 'BY sort_order ASC' at line 1 in C:\xampp\htdocs\models\Category.php:12

Помогите,пожалуйста. Я кодировала интернет-магазин.

Проблема в файле Category.php

<?php 
class Category
{
    public static function getCategoriesList()
    {
        
        $db = Db::getConnection();
        $categoryList = array();
        $result = $db->query('SELECT id, name FROM category'
        . 'ORDER BY sort_order ASC');
        $i = 0;
        while ($row = $result->fetch()) {
            $categoryList[$i]['id'] = $row['id'];
            $categoryList[$i]['name'] = $row['name'];
            $i++;
        }
        return $categoryList;
    }
}

Файл Db.php

<?php 
class Db
{
    введите сюда код
    public static function getConnection()
    {
        $paramsPath = ROOT . '/config/db_params.php';
        $params = include($paramsPath);
        $options = [
            \PDO::ATTR_ERRMODE            => \PDO::ERRMODE_EXCEPTION, // сообщать об ошибках
            \PDO::ATTR_DEFAULT_FETCH_MODE => \PDO::FETCH_ASSOC, // чтобы не писать каждый раз
            \PDO::ATTR_EMULATE_PREPARES   => false, // для удобства
        ];
        
        $dsn = "mysql:host={$params['host']};dbname={$params['dbname']}";
        $db = new PDO($dsn, $params['user'], $params['password'], $options);
        $db->exec("set names utf8");
        return $db;
    }
}
Answer 1

Ошибка связана с тем, что не хватает пробела перед ORDER BY. Если убрать конкатенацию строк (зачем она здесь, кстати, только для сокращения общей длины строки?), то получится вот что:

$result = $db->query('SELECT id, name FROM categoryORDER BY sort_order ASC');

А должно быть так:

$result = $db->query('SELECT id, name FROM category ORDER BY sort_order ASC');

Поэтому SQL и ругается на синтаксическую ошибку.

READ ALSO
phpQuery &gt; FATAL ERROR

phpQuery > FATAL ERROR

Пытаюсь сделать парсер на phpQuery, получаю DOM документ через:

177
Не работает пагинация WP_Query

Не работает пагинация WP_Query

использую WP_Query для страницы поиска объектов недвижимости, проблема в пагинации, всегда отображается количество страниц которе есть вообще...

215
Вывести поле ACF WordPress

Вывести поле ACF WordPress

Есть страница, где я списком вывожу посты с post_type=testНа этой странице мне нужно вывести кастомное поле text_area конкретного поста, известен его...

271
Использование обновляемых View в Entity Framework

Использование обновляемых View в Entity Framework

Используется EF6Для работы с базой данных используется подход db-first с созданием edmx модели

158