使用mysqli扩展导致语法错误的嵌套/子查询;虽然语法正确

时间:2011-09-10 17:17:30

标签: php mysqli subquery nested-queries

我正在使用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时)

感谢您的时间,非常感谢。

1 个答案:

答案 0 :(得分:0)

您不打算使用multi_query()吗?

因为mysqli_query无法运行多个查询