Dav*_*wer 7 php mysql variables
这个问题的解决方案可能是我的一个简单的过度.
我试图在PHP中运行存储为字符串的MYSQL查询.使用像Navicat这样的DBM工具可以很好地运行查询,但在我的PHP开发环境中返回false.有什么东西我看了吗?
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;
Run Code Online (Sandbox Code Playgroud)
我正在执行这样的查询;
$result = mysql_query($this->query);
Run Code Online (Sandbox Code Playgroud)
$this->query 是一个包含上述查询的字符串,因为它在上面显示给您.
MrC*_*ode 19
问题是mysql_query()不支持多个查询.您SET @running_sum = 0;被视为单独的查询,因此您必须先执行该操作:
$result1 = mysql_query("SET @running_sum = 0;");
$result2 = mysql_query($this->query); // <-- without the SET ... query
Run Code Online (Sandbox Code Playgroud)
从手册:
mysql_query()发送唯一查询(不支持多个查询)
附注:该mysql_*库已弃用,建议升级到现代MySQL库,如PDO或MySQLi.
也可以使用multi_query方法代替queryMySQLi:
$query = "SET @running_sum = 0; SELECT ...";
$db_link->multi_query($query);
Run Code Online (Sandbox Code Playgroud)