Переменные MYSQL в php-запросе

решение этой проблемы может быть простым по виду шахты.

Я пытаюсь запустить запрос MYSQL, хранящийся как строка в PHP. Запрос отлично работает с помощью инструмента DBM, такого как Navicat, но возвращает false в моей среде разработки PHP. Я что-то просмотрел?

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 - строка, содержащая вышеуказанный запрос, как показано выше.

3 ответов


проблема 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, такой как PDO или MySQLi.


поместите переменную вот так. думаю, это должно сработать.

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

можно использовать multi_query вместо query в в mysqli:

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