Mysqli多查询PHP
我想使用php mysqli函数来查询: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
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,请阅读本手册页面的第一段:它并不是说设置用户变量会持续到会话的其余部分,但这就是所发生的事情,如果您有疑问,可以很容易地进行测试。