PHP / MySQL:WHILE循环内的同步查询?

时间:2016-06-16 22:25:38

标签: php mysql

我正在尝试在mysqli_fetch_array上运行的WHILE循环内执行查询。该查询给出以下错误:

Error: Commands out of sync; you can't run this command now

我发现你不能同时进行查询。这是我的代码

$query "SELECT * FROM table";
$exec = mysqli_query($con, $query);

while($loop = mysqli_fetch_array($exec)){

$data = $loop['data'];

$sim = "SELECT * FROM table2 WHERE col1 = '$data'";
$execsim = mysqli_query($con, $sim);
$getsim = mysqli_fetch_array($execsim);
$somedata = $getsim['somedata'];

//insert $somedata and $data into table3

}

经过一番研究,我发现store_result()在这里很有用。请原谅我的无知,因为这对我来说是新的。我没有找到任何与WHILE循环场景一起使用的示例/解决方案(是否有所作为?) - 大多数都是面向对象的风格。

解决这个问题的最有效方法是什么?

1 个答案:

答案 0 :(得分:3)

最有效的解决方法是避免逐行处理(RBAR),只需对集合执行操作,并完成操作。

INSERT INTO table3 (somedata, col1)
SELECT t2.somedata
     , t2.col1
  FROM table2 t2
  JOIN table1 t1
    ON t1.data = t2.col1
 ORDER BY t2.somedata, t2.col1

如果这不满足要求,那么规范中就省略了一些要求,我们只能猜测你实际想要实现的目标。

作为另一种选择,避免两个查询,只使用连接操作,如上面的INSERT ... SELECT语句所示。 (刚开始使用SELECT)。

规范中没有给出关于循环内的极度循环的原因的指示,以单独处理行。