Illuminate\Database\QueryException: SQLSTATE [42000]: синтаксическая ошибка или нарушение прав доступа: 1064

я пытаюсь добавить этот запрос в свой код в laravel. он работает гладко в phpmyadmin или с командной строкой mysql, но позволяет получить что-либо, кроме этой синтаксической ошибки.

мой запрос:

$query_sql = " CREATE TEMPORARY TABLE F as( 
                        SELECT * from (
                            select M.* ,M2.idA from (
                                        SELECT  o.id , o_n.id_n as idD from o ,o_n where FIND_WILD_IN_SET(o.id,o_n.id_o)
                                        and o_n.id_n IN ({$start_n_string})
                                    ) M  
                            JOIN ( SELECT  o.id , o_n.id_n as idA from o,o_n where FIND_WILD_IN_SET(o.id,o_n.id_o)
                                    and o_n.id_n IN ({$end_n_string})
                            ) M2 on M.id = M2.id GROUP by id
                        ) x
                    );


SELECT o.* from o
                where o.id IN ( 
                    select id_offre from o_rv join F on F.id = o_rv.id_offre 
                    where find_in_set(idD,o_rv.id_n]) < find_in_set(idA,os_rv.id_n)
                    )";
            
        $list_pot_r=DB::select($query_sql);

SQLSTATE[42000]: Синтаксическая ошибка или нарушение прав доступа: 1064 У вас есть ошибка в синтаксисе SQL; проверьте руководство, соответствующее вашему Версия сервера MySQL для правильного синтаксиса для использования рядом с 'select o.* from о

ПРИМЕЧАНИЕ:

  • Пробовал «строгий» -> ложный
  • Использование DB::select();
  • DB::unprepared() единственная, которая не возвращает никакой ошибки, но она не вернуть результат ни только (ИСТИНА)

РЕДАКТИРОВАТЬ

когда я удаляю последний статус, я получаю это:

SQLSTATE[HY000]: Общая ошибка: 2014 Не удается выполнить запросы во время другие небуферизованные запросы активны. Рассмотрите возможность использования PDOStatement::fetchAll(). В качестве альтернативы, если ваш код только когда-либо собирается работать с mysql, вы можете включить буферизацию запросов, установив атрибут PDO::MYSQL_ATTR_USE_BUFFERED_QUERY.

Как вы добавляете этот запрос в laravel? можете предоставить код?

Prashant Deshmukh..... 10.12.2020 05:36

@PrashantDeshmukh..... используя DB::select($query);

Ouaaqil Youssef 10.12.2020 05:56

Затем проверьте, ставите ли вы правильные кавычки вокруг запроса.

Prashant Deshmukh..... 10.12.2020 05:58

@PrashantDeshmukh ..... я проверил, я даже принял запрос с предоставленным исключением, и он работал в командной строке phpmyadmin / mysql

Ouaaqil Youssef 10.12.2020 06:00

Пожалуйста, опубликуйте код laravel DB:: select.

Prashant Deshmukh..... 10.12.2020 06:01

@PrashantDeshmukh..... готово!

Ouaaqil Youssef 10.12.2020 06:05
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать 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
6
860
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

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

может быть, вы env не разрешаете несколько запросов в одном выражении, поэтому из-за того, что ваша временная таблица не обновляется, попробуйте использовать динамический запрос вместо создания временной таблицы

SELECT o.* 
from o
where o.id IN ( 
    select id_offre from o_rv 
    join (SELECT * from (
                    select M.* ,M2.idA from (
                                SELECT  o.id , o_n.id_n as idD from o ,o_n where FIND_WILD_IN_SET(o.id,o_n.id_o)
                                and o_n.id_n IN ({$start_n_string})
                            ) M  
                    JOIN ( SELECT  o.id , o_n.id_n as idA from o,o_n where FIND_WILD_IN_SET(o.id,o_n.id_o)
                            and o_n.id_n IN ({$end_n_string})
                    ) M2 on M.id = M2.id GROUP by id
                ) )  F on F.id = o_rv.id_offre 
    where find_in_set(idD,o_rv.id_n]) < find_in_set(idA,os_rv.id_n)
    )";
          

Спасибо, это работает ! но как я могу исправить свою среду, чтобы разрешить несколько запросов в будущем?

Ouaaqil Youssef 10.12.2020 15:25

вы должны проверить версию dbdriver, а также проверить, разрешает ли laravel эту функцию

ScaisEdge 10.12.2020 16:01

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