Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/240.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL查询可以在mysqlworkbench上工作,但不能在php环境上工作_Php_Mysql - Fatal编程技术网

MySQL查询可以在mysqlworkbench上工作,但不能在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

我有一个查询可以在MySQL 5.6版本的MySQL workbench程序下完美运行,但是当我尝试在PHP环境中测试同一个查询时,我得到了以下错误:

{
  "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