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 的值将对第二个查询保持有效。

所以只需运行mysqli_query("SET ...");,然后mysqli_query("SELECT...");单独运行。这样做要简单得多,并且至少避免了一个安全风险。

关于你的错误:

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 回答