Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php查询中的MYSQL变量_Php_Mysql_Variables - Fatal编程技术网

php查询中的MYSQL变量

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( '$',

解决这个问题的办法可能是简单地忽略我的想法

我正在尝试运行一个在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("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”之类的注入查询。对不起,我看错了。我已经删除了我的评论。删除你的,我们可以假装我什么都没说。很抱歉