Mysqli多查询PHP

Mysqli多查询PHP,php,mysqli,multi-query,Php,Mysqli,Multi Query,我想使用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 sco

我想使用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_查询(link,query);功能,但没有运气,有什么帮助吗?

不需要使用多查询,而且每次使用多查询都会有风险

用户变量@rownum、@rank、@prev_val的值将在第二次查询中保持有效,只要您在同一连接中运行这两个查询

所以只需运行
mysqli_查询(“SET…”)
然后运行
mysqli_查询(“选择…”)分别显示。这样做要简单得多,并且至少可以避免一种安全风险

关于你的错误:

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

始终检查mysqli_query()的返回值。如果出现错误,它将返回false。当然,您不能运行
mysqli\u fetch\u行(false)

不需要使用多查询,并且无论何时使用多查询都会带来风险

用户变量@rownum、@rank、@prev_val的值将在第二次查询中保持有效,只要您在同一连接中运行这两个查询

所以只需运行
mysqli_查询(“SET…”)
然后运行
mysqli_查询(“选择…”)分别显示。这样做要简单得多,并且至少可以避免一种安全风险

关于你的错误:

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

始终检查mysqli_query()的返回值。如果出现错误,它将返回false。当然,您不能运行
mysqli\u fetch\u行(false)

尝试改用,因为您的查询实际上是多语句我正在尝试:$query=mysqli\u multi\u query($cxn,$sqll)$结果=mysqli存储结果($cxn);虽然($row=mysqli_fetch_row($result)){echo$row[1]。“
”;}但是mysqli_fetch_row返回错误。mysqli_fetch_row()希望参数1是mysqli_result,在这种情况下,显示(php)代码。您可以尝试更改
mysqli_多_查询(…)进入
mysqli_多_查询(…)或死亡(mysqli_error())。这将告诉您是否有任何mysql错误,否则将被静默忽略。请尝试改用,因为您的查询实际上是多语句。我正在尝试:$query=mysqli\u multi\u query($cxn,$sqll)$结果=mysqli存储结果($cxn);虽然($row=mysqli_fetch_row($result)){echo$row[1]。“
”;}但是mysqli_fetch_row返回错误。mysqli_fetch_row()希望参数1是mysqli_result,在这种情况下,显示(php)代码。您可以尝试更改
mysqli_多_查询(…)进入
mysqli_多_查询(…)或死亡(mysqli_error())。这将告诉您是否有任何mysql错误,否则将被默默忽略。太棒了。这在任何API或论坛上几乎都没有记录。我不知道这是否是一个“明显”的解决方案,但我已经为这个解决方案搜索了2天多了。@Michael,请阅读本手册页面的第一段:它并没有说设置用户变量会持续到会话的其余部分,但这就是所发生的事情,如果您有疑问,它肯定很容易测试。太棒了。这在任何API或论坛上几乎都没有记录。我不知道这是否是一个“明显”的解决方案,但我已经为这个解决方案搜索了2天多了。@Michael,请阅读本手册页面的第一段:它并不是说设置用户变量会持续到会话的其余部分,但这就是所发生的事情,如果您有疑问,可以很容易地进行测试。