[英]PHP/MySQL: simultaneous queries inside WHILE loop?
我正在嘗試在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循環場景中使用它的示例/解決方案( 這有什么區別嗎? )-大多數也是面向對象的樣式。
解決此問題的最有效方法是什么?
對此,最有效的解決方法是避免處理逐行(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
開始)。
規范中未給出有關循環中存在難以解決的循環以單獨處理行的原因的指示。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.