如何在mysqli_multi_query中传递变量?

时间:2012-07-27 17:46:51

标签: mysql mysqli

我问了一个类似的问题here,但我意识到这个例子不足以满足我的需要。这是我的新问题:

我正在尝试从mysqli查询中设置变量number。并在下一个查询中使用该变量。我尝试了以下查询,但徒劳无功。什么是正确的方法?

mysqli_multi_query($mysqli, "COUNT(fruits) FROM eatables as num SET @number= num; UPDATE fruits SET fruits = @number") or die('</br>mySqli Error</br>');

这里是示例sql数据库:

table eatables:

#fruits   #numbers
apple      null
apple      null
grapes     null
mango      null
pears      null
grapes     null
查询后

应该是

#fruits   #numbers
apple      3
apple      3
grapes     2
mango      1
pears      1
grapes     2

2 个答案:

答案 0 :(得分:1)

您的案例不需要多次查询,
做内部联接以进行更新

update eatables
inner join (select fruits, count(*) as total from eatables group by fruits) as b
on eatables.fruits = b.fruits
set eatables.numbers = b.total

答案 1 :(得分:0)

你应该显示更多的代码上下文,虽然它听起来像你想要做的不是如何使用mysqli_multi_query。它旨在用于执行一组在字符串中传递的不同查询,并使您能够独立地处理每个结果集。它不适用于循环同一查询的地方X次更改SQL语句以响应前一语句的执行。