我正在使用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和similar帖子中正确执行,直接指向multi_query方法但是这似乎不是一个可以拆分成多个查询的查询?它必然会有一个更简单的解决方案(也许)
php查询是:
$result = mysqli_query($link, $queryAsAbove);
查询是动态的(它会传递一个文件名)虽然这是转义而不是原因。 最后,查询在mysqli_fetch_array循环中,尽管已检查变量是否存在同名冲突。
sql @rank变量设置为-1,以便将获取的数组索引为0.查询仅用于从SELECT查询中标识行号,如here所述。
错误如下:
"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时)
感谢您的时间,非常感谢。