我正在尝试在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循环场景一起使用的示例/解决方案(是否有所作为?) - 大多数都是面向对象的风格。
解决这个问题的最有效方法是什么?
答案 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
)。
规范中没有给出关于循环内的极度循环的原因的指示,以单独处理行。