私のランク計算クエリ
SELECT @i := @i +1 AS rank, t . *
FROM groups t, (
SELECT @i :=0
)foo
WHERE (
t.group_id = '1'
)
ORDER BY t.views DESC
)r
WHERE r.id =4
phpmyadmin でルートとしてログインすると、すべてが適切に計算されます。php 経由で php の mysql アカウントを使用すると、出力が正しく計算されません。ランクを計算せず、すべての行をフェッチし、指定した ID の行番号を見つけてから、その前のすべての行に関して行番号の位置を返します。
したがって、5 行あり、r.id = 4 がテーブルの 4 行目にある場合、t.views による順序は無視され、id #4 がテーブルの 4 番目の行であることがわかります。r.id = 1000 は表の 1000 番目です。ランクは教えてくれません。ルートとしてクエリを実行すると、ランクが正しく表示されます。
@の使用を許可するには、php mysqlユーザーに付与する必要があるある種の許可があると思いますか? それが私の唯一の論理的な説明です。論理を無視しているようです。誰が許可が何であるか知っていますか?