MySQL查询可以在mysqlworkbench上工作,但不能在php环境上工作
我有一个查询可以在MySQL 5.6版本的MySQL workbench程序下完美运行,但是当我尝试在PHP环境中测试同一个查询时,我得到了以下错误:MySQL查询可以在mysqlworkbench上工作,但不能在php环境上工作,php,mysql,Php,Mysql,我有一个查询可以在MySQL 5.6版本的MySQL workbench程序下完美运行,但是当我尝试在PHP环境中测试同一个查询时,我得到了以下错误: { "code": 500, "response": { "error": { "description": "Query error", "error": { "errorInfo": [ "42000", 1064, "You
{
"code": 500,
"response": {
"error": {
"description": "Query error",
"error": {
"errorInfo": [
"42000",
1064,
"You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ')t1 HAVING price > 0 AND price < 804' at line 1"
]
},
"query": null
}
}
}
有人能给我解释一下是什么导致了这个问题吗?
在我看来,它的语法似乎非常正确。尝试将查询更改为几乎可以在任何数据库中使用的查询?
(几乎是,因为
LIMIT
可以是特定于数据库的。例如,MS SQL Server使用TOP
)
与sql相比,错误显示了不同的价格标准。那么,也许您应该显示使用您的查询的php代码段?但是我认为have应该放在子查询中。这是我们小组的一部分。或者将HAVING改为WHERE子句。谢谢@LukStorm的回复。我已经用php部分更新了我的问题。关于GROUPBY函数,我认为它也可以保留在子查询之外。另外,因为否则mysqlworkbench程序也会给我一个错误。我还更改了WHERE条件的HAVING,在mysqlworkbench中,它在这两种情况下都有效。但是在PHPENV上,它会得到相同的输出错误。好吧,在php代码方面帮不了你多少忙(不是我喜欢的)。但是关于SQL,我知道MySql允许选择没有聚合功能的字段,这些字段不在GROUPBY中。但在其他数据库上,或取决于不允许的设置。所以我想知道,当它通过PHP运行它时,它是否使用了这个设置。您可以尝试将MAX用于
t.id、t.user\u id、t.registration
。由于使用的是SUM,因此GROUP BY和have应该位于子查询中。
SELECT * FROM(
SELECT t.id,
t.user_id ,
t.invoice_num,
t.registration,
SUM(t.price) as price
FROM t_0 t
WHERE t.brandid=587
GROUP BY t.invoice_num)t1
HAVING price > 0 AND price < 12
ORDER BY id DESC LIMIT 100 OFFSET 0;
$test_query = "here the query that I have";
$result = $con->query($test_query)->fetchAll(PDO::FETCH_ASSOC);
SELECT
MAX(t.id) AS id,
MAX(t.user_id) AS user_id,
t.invoice_num,
MAX(t.registration) AS registration,
SUM(t.price) as price
FROM t_0 t
WHERE t.brandid = 587
GROUP BY t.invoice_num
HAVING SUM(t.price) BETWEEN 1 AND 11
ORDER BY id DESC
LIMIT 100 OFFSET 0