0

これを照会するために、php mysqli関数を使用したい:

SET @rownum = 0, @rank = 1, @prev_val = NULL;
SELECT @rownum := @rownum + 1 AS row,
    @rank := IF(@prev_val!=score,@rownum,@rank) AS rank,
    userid,
    @prev_val := score AS score
FROM (
    SELECT userid, sum(amount) as score 
    from leads WHERE date(time) >= '2013-08-15'
    group by userid
) exodus_entries 
 ORDER BY rank asc LIMIT 0,100;

mysqli_query(link, query); を使用してみました。機能しますが、運がありません。助けはありますか?

4

1 に答える 1

3

マルチクエリを使用する必要はなく、マルチクエリを使用するたびにセキュリティ上の問題が発生するリスクがあります。

ユーザー変数 @rownum、@rank、@prev_val の値は、同じ接続で両方のクエリを実行する限り、2 番目のクエリでも有効です。

したがって、実行してから個別mysqli_query("SET ...");に実行してください。mysqli_query("SELECT...");これを行う方がはるかに簡単で、少なくとも 1 つのセキュリティ リスクを回避できます。

あなたのエラーについて:

mysqli_fetch_row() expects parameter 1 to be mysqli_result, boolean given 

常にmysqli_query() の戻り値を確認してください。エラーが発生した場合はfalseを返します。もちろん走れませんmysqli_fetch_row(false);

于 2013-09-18T19:22:40.763 に答える