簡體   English   中英

php查詢中的MYSQL變量

[英]MYSQL variables in php query

這個問題的解決方案可能是我的一個簡單的過度。

我試圖在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;

我正在執行這樣的查詢;

$result = mysql_query($this->query);

$this->query是一個包含上述查詢的字符串,因為它在上面顯示給你。

問題是mysql_query()不支持多個查詢。 你的SET @running_sum = 0; 被認為是一個單獨的查詢,所以你必須先執行:

$result1 = mysql_query("SET @running_sum = 0;");

$result2 = mysql_query($this->query); // <-- without the SET ... query

手冊

mysql_query()發送唯一查詢(不支持多個查詢)


附注:不推薦使用mysql_*庫,建議升級到現代MySQL庫,如PDOMySQLi

像這樣放變量。 我想它應該工作。

 mysql_query("SELECT @i:=0");
 mysql_query("UPDATE table_name SET id = @i:=@i+1");

也可以使用multi_query方法代替MySQLi的query

$query = "SET @running_sum = 0; SELECT ...";
$db_link->multi_query($query);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM