MySQL查询直接在MySQL中工作,但当在php中运行时,由于首先运行集合查询,我收到了一个错误



我正试图在我的PHP脚本中运行以下脚本来计算运行总数。

<?php // Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$sql = "set @csum := 0; select  date(`DATE`) as dadate,  Price , (@csum := @csum + Price) as cumulative_sum from Profits WHERE Strat = 'arm' order by dadate;";
$result = $conn->query($sql)or die($conn->error);
if ($result->num_rows > 0) {
// output data of each row
while($row = $result->fetch_assoc()) {
echo "{time: '" . $row["Date"]. "', value: ".$row["cumulative_sum"]. "},<br>";
}
} else {
echo "0 results";
}
$conn->close(); ?>

我相信我会收到下面的错误,因为我一次运行两个查询,但一次只能执行一个查询。

查看与MySQL服务器版本对应的手册使用的正确语法接近'选择日期(daDATE(,价格,(@csum:=@csum+价格(作为第1行的累计_'

有什么办法可以解决这个问题吗?需要将:csum设置为0以确保它从0 开始

严格来说,这是不正确的,但我找不到它不工作的例子(在8.0之前的MySQL版本中(…

SELECT DATE(`daDATE`) date
, Price
, (@csum := @csum + Price) as cumulative_sum 
from Profits 
, (SELECT @csum := 0) vars 
WHERE Strat = 'arm' 
ORDER 
BY daDATE;

注意,因为您将结果传递给应用程序代码,所以您可以轻松地处理的累积算术

另一个初始化变体(没有SELECT,如果需要它是单个表,则主要用于UPDATE(:

SELECT DATE(`daDATE`) date
, Price
, (@csum := @csum + Price) as cumulative_sum 
from Profits
WHERE Strat = 'arm' 
AND (@csum := 0) = 0
ORDER 
BY daDATE;

最新更新