Переменные 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);