я пытаюсь добавить этот запрос в свой код в 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 о
ПРИМЕЧАНИЕ:
РЕДАКТИРОВАТЬ
когда я удаляю последний статус, я получаю это:
SQLSTATE[HY000]: Общая ошибка: 2014 Не удается выполнить запросы во время другие небуферизованные запросы активны. Рассмотрите возможность использования PDOStatement::fetchAll(). В качестве альтернативы, если ваш код только когда-либо собирается работать с mysql, вы можете включить буферизацию запросов, установив атрибут PDO::MYSQL_ATTR_USE_BUFFERED_QUERY.
@PrashantDeshmukh..... используя DB::select($query);
Затем проверьте, ставите ли вы правильные кавычки вокруг запроса.
@PrashantDeshmukh ..... я проверил, я даже принял запрос с предоставленным исключением, и он работал в командной строке phpmyadmin / mysql
Пожалуйста, опубликуйте код laravel DB:: select.
@PrashantDeshmukh..... готово!
может быть, вы 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)
)";
Спасибо, это работает ! но как я могу исправить свою среду, чтобы разрешить несколько запросов в будущем?
вы должны проверить версию dbdriver, а также проверить, разрешает ли laravel эту функцию
Как вы добавляете этот запрос в laravel? можете предоставить код?