我使用mysqli改進的擴展(過程式),並且在通過mysqli_query()函數運行子查詢時剛剛遇到異常。使用mysqli擴展嵌套/子查詢套用語法錯誤;儘管語法正確
更新:經過很多故障排除後,我發現原因的錯誤是設置'@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查詢中的行號,如所述。
錯誤如下:
"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有錯誤)。
感謝您指出了OUT-是的,儘管我只是引用一個建議我研究,但已不再有效(現在的問題更新)謝謝。這似乎是隻有當SET @var = x用於查詢 – user885983
@ user885983時:是的,這正是這個問題。 'SET @var = x'是第一個查詢,SELECT是第二個。 – genesis
我明白了,你是說我應該拆分查詢(使用multi_query?)並將SET'@var = x'存儲爲存儲查詢?然後用查詢的後半部分引用.. – user885983