这个问题在这里已经有了答案:
mysqli不允许多个查询(1个答案)
两年前关门了。
我已经看了十几篇关于在php中不起作用的查询的文章,但是它们都不能解决我的问题——希望这是一个简单的问题!
我在这里试图做的是根据每年的总销售额对这些行进行“排名”,到目前为止效果相当不错。当我在mysql中运行查询时,它工作正常-我返回数百个结果。
SET @row_number := 0;
SELECT @row_number := @row_number + 1 AS row_number,
TotalRevenue,
CompanyID
FROM (
SELECT CompanyID,
SUM(Sales_Amt) AS TotalRevenue
FROM Sales,
(SELECT @row_number := 0) r
GROUP BY CompanyID
) t
WHERE TotalRevenue > 0
ORDER BY TotalRevenue DESC
生产:
row_number | TotalRevenue | CompanyID
-----------+--------------+----------
1 | 81130.00 | 333
2 | 72234.00 | 876
3 | 62653.00 | 123
4 | 54408.40 | 999
5 | 44548.00 | 111
但是,当我通过php运行它时,返回错误:
sql语法有错误;在第2行的“select@row\u number:=@row\u number+1 as row\u number,totalrevenue”附近,检查与您的mysql服务器版本对应的手册中使用的正确语法
根据这里的其他帖子,我尝试过:
在我的列名周围添加``
在我的列名周围添加“”
在我创建@row\u number时添加:=而不是=
确认在php中的查询之后添加了所有空格,以便关键字不会挤在一起
将mysqli->charset设置为utf-8
以下是我的php代码,以备您需要:
$query = "SET @row_number := 0;
SELECT @row_number := @row_number + 1 AS `row_number`,
TotalRevenue,
CompanyID
FROM (
SELECT CompanyID,
SUM(`Sales_Amt`) AS TotalRevenue
FROM Sales
GROUP BY CompanyID
) t
WHERE TotalRevenue > 0
ORDER BY TotalRevenue DESC";
if (!$result = $mysqli->query($query))
{
print_r($mysqli->error);
}
希望这将是一个非常简单的东西,我只是没有看到。
谢谢!
1条答案
按热度按时间hl0ma9xz1#
除了s之外再加一个选项。dev的答案,可以用mysqli多查询;
这将允许您一次执行一个以上的查询,将所有查询保持在查询的同一范围内
它使用的开销也稍微少一些,因为从技术上讲,您只需要执行一个查询,因为只有一个连接,而不是两个单独的调用
有必要研究存储过程,这样就不必设置变量,而是将它们传递到查询本身