我正在使用 mysqli 改进的扩展(程序样式),并且在通过 mysqli_query() 函数运行子查询时遇到了异常。
更新:经过多次故障排除后,我发现错误的原因是设置了“@rank”变量。我尝试了一个没有设置这样的'@var'的查询并且工作正常。但它们是需要的...... - PHP 是否没有将 'SET @example = x' 正确传递给 mysql,或者需要以某种方式转义?
查询如下:
SET @rank = -1;
SELECT rank FROM (
SELECT @rank := @rank +1 AS rank, location, fileName
FROM assets WHERE idUser = '32'
ORDER BY UploadTimestamp DESC) AS rank_number
WHERE photoFileName = 'filename.ext'
查询在 Phpmyadmin 中正确执行,类似的帖子直接针对 multi_query 方法,但这似乎不是可以拆分为多个查询的查询?它必然有一个更简单的解决方案(也许)
php查询是:
$result = mysqli_query($link, $queryAsAbove);
查询是动态的(它传递了一个文件名),尽管这是转义而不是原因。最后,查询在 mysqli_fetch_array 循环中,尽管变量已经检查了同名冲突。
sql @rank 变量设置为 -1,以便获取的数组在 0 处建立索引。该查询仅用于从 SELECT 查询中识别行号,如此处所述。
错误如下:
"You have an error...the right syntax to use near 'SELECT rank FROM (SELECT @rank :=
@rank +1 AS rank, location, filename' at line 2"
(仅在使用 php 运行时出现错误,如果查询复制到 PMA 中则不会出现)
感谢您的宝贵时间,非常感谢。