php - PHP数据库更新中如何使用SQL累加求和

标签 php mysql

我正在制作一份带有累积金额的简单帐户报告。我让 sql 在 phpmyadmin 中工作。 设置@csum:= 0; 更新账户设置 设置 BAL = (@csum := @csum + DR) WHERE Accounttype = 'EXPENSES' AND date ='2019-07-19' 按 ID 排序;

当我将这个 SQL 放入 PHP 时

我收到错误

//我删除了连接部分

// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
// This is the where i am having issues ! ! !
$sql = "
set @csum := 0
update accountssetup
set BAL = (@csum := @csum + DR)
order by id;";

if ($conn->query($sql) === TRUE) {
echo "Record updated successfully";
} else {
echo "Error updating record: " . $conn->error; //$error ='1';

}
$conn->close();

我希望通过使用累积总和更新 BAL 来实现累积总和,但我收到此错误

更新记录时出错:您的 SQL 语法有错误;检查与您的 MariaDB 服务器版本相对应的手册,了解在第 2 行“update accountsetup set BAL = (@csum := @csum + DR) order by id”附近使用的正确语法

最佳答案

似乎你在设置后漏掉了一个分号 使用 set = 0 (而不是 set := 0),因为这是一个初始化,并尝试在 (@csum + DR) 周围使用 ()

$sql = "
set @csum = 0;
update accountssetup
set BAL = (@csum := (@csum + DR));";

但请确保您的数据库驱动程序允许在查询中使用多个 sql 语句 您不需要按

订购

关于php - PHP数据库更新中如何使用SQL累加求和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57229454/

相关文章:

php - count() 在 while 循环后给我错误的输出

php - 使用 PHP 检查前值和当前值(数组)创建表

mysql 按名称将列分组在一起

php - 当我使用 session 将值从一个页面发送到另一个页面时,出现以下错误

php - 如何检查查询返回的结果自上次检查以来是否已更改

php - PHP 中 undefined index 。需要通用解决方案

php - 在相同列名的表中循环获取图像

php - WAMP 无法访问本地网络 403 Forbidden

MySQL innodb b-tree 在后台重新平衡异步或在需要重新平衡时完成每次写入操作

mysql - 将值从 table_a 复制/更新到 table_b 的另一行,其中 table_a.id = table_b.id AND table_a.name = table_b.name