【发布时间】:2023-04-10 00:46:02
【问题描述】:
我正在尝试将此查询添加到我在 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 附近使用正确的语法 o
注意:
- 尝试了“严格”-> 错误
- 使用 DB::select();
- DB::unprepared() 唯一不返回任何错误但它不返回 返回结果既不是只有一个 (TRUE)
编辑
当我删除最后一条语句时,我得到了这个:
SQLSTATE[HY000]:一般错误:2014 无法执行查询,而 其他无缓冲查询处于活动状态。考虑使用 PDOStatement::fetchAll()。或者,如果您的代码只是 要针对 mysql 运行,您可以通过设置启用查询缓冲 PDO::MYSQL_ATTR_USE_BUFFERED_QUERY 属性。
【问题讨论】:
-
你是如何在 laravel 中添加这个查询的?可以提供代码吗?
-
@PrashantDeshmukh..... 使用 DB::select($query);
-
然后检查您是否在查询周围加上了正确的引号。
-
@PrashantDeshmukh .....我确实检查了我什至接受了提供的异常查询,它在 phpmyadmin / mysql 命令行中工作
-
请贴出 DB::select 的 laravel 代码。
标签: php mysql sql database laravel