php查询中的MYSQL变量
解决这个问题的办法可能是简单地忽略我的想法 我正在尝试运行一个在PHP中存储为字符串的MYSQL查询。使用诸如Navicat之类的DBM工具,查询运行良好,但在我的PHP开发环境中返回false。有什么东西我看过头了吗php查询中的MYSQL变量,php,mysql,variables,Php,Mysql,Variables,解决这个问题的办法可能是简单地忽略我的想法 我正在尝试运行一个在PHP中存储为字符串的MYSQL查询。使用诸如Navicat之类的DBM工具,查询运行良好,但在我的PHP开发环境中返回false。有什么东西我看过头了吗 SET @running_sum = 0; SELECT TID, SumTotal, T.`Freight`, T.`Insurance`, T.`Discount`, CONCAT( '$',
SET @running_sum = 0;
SELECT
TID,
SumTotal,
T.`Freight`,
T.`Insurance`,
T.`Discount`,
CONCAT(
'$',
FORMAT(
@running_sum :=@running_sum + SumTotal + T.`Freight` + T.`Insurance` - T.`Discount`,
2
)
) AS 'Running Total'
FROM
(
SELECT
TID,
SUM(Quantity * UnitNetValue) AS SumTotal,
T.`Freight`,
T.`Insurance`,
T.`Discount`
FROM
Transactions T
JOIN `Transactions_Products` P ON T.TransactionID = P.TID
WHERE
(
T.TemplateName = ''
OR T.TemplateName IS NULL
)
AND T. STATUS = 1
GROUP BY
TransactionID
) AS T;
我正在这样执行查询
$result = mysql_query($this->query);
$this->query
是一个字符串,用于保存上面显示的查询。像这样放置变量。我想应该有用
mysql_query("SELECT @i:=0");
mysql_query("UPDATE table_name SET id = @i:=@i+1");
问题是
mysql\u query()
不支持多个查询。你的设置@running\u sum=0
被视为一个单独的查询,因此您必须首先执行该查询:
$result1 = mysql_query("SET @running_sum = 0;");
$result2 = mysql_query($this->query); // <-- without the SET ... query
$result1=mysql\u query(“SET@running\u sum=0;”);
$result2=mysql\u查询($this->query);// 也可以使用multi_query
方法代替MySQLi的query
:
$query = "SET @running_sum = 0; SELECT ...";
$db_link->multi_query($query);
谢谢您的帮助。非常感谢。我将更新代码以考虑这一点。使用mysqli_multi_query()一次发送多个查询时,请注意安全考虑。使用mysqli_multi_query(),您可以打开自己的门户,接受诸如“DROP DATABASE”之类的注入查询。对不起,我看错了。我已经删除了我的评论。删除你的,我们可以假装我什么都没说。很抱歉