我遇到了讓我完全難倒的這個問題。這是我的執行模式。 PDO調用嵌套在foreach循環中。Foreach循環中的PDO和MySQL更新
foreach(){
foreach(){
}
}
我使用PDO與MySQL,當我執行UPDATE查詢背靠背,他們互相干擾循環內。我知道他們從評論一套和執行另一套來單獨工作。下面是我處理的代碼模板:
$set_data1 = "UPDATE data_table
SET data_status = 'PROCESSED'
WHERE data_id = :data_id1";
$stmt = $db->prepare($set_data1);
$stmt->bindParam(':data_id1', $data_array1['data_id'], PDO::PARAM_INT);
$stmt->execute();
$set_data2 = "UPDATE data_table
SET data_status = 'PENDING'
WHERE data_id = :data_id2";
$stmt = $db->prepare($set_data2);
$stmt->bindParam(':data_id2', $data_array2['data_id'], PDO::PARAM_INT);
$stmt->execute();
出於某種原因,嵌套foreach循環中執行兩個查詢時,從$ set_data1數據是由$ set_data2抵消。我試過用$ stmt-> closeCursor()關閉遊標。我試過使用單個語句來準備,只是將新參數綁定到語句。我試過將$ stmt和$ db實例設置爲null,然後重新實例化它們無濟於事。我試過在查詢中使用CASE THEN和IF條件...什麼都沒有。任何有關問題的信息都會很棒。我不知道PDO在循環中的同一個表上調用UPDATES時是否有錯誤,因爲我從來沒有在其他地方遇到過這個問題。提前致謝!
您不顯示代碼,其中$ data_array1和$ data_array2準備好了。是否有可能/兩者中的data_id是相同的? – RobP
不,這些ID是完全不同的,因爲它們之前使用不同的參數進行檢索,然後存儲在不同的陣列中。 –
你可以發佈它在foreach循環中的外觀嗎?我懷疑你沒有在正確的地方打電話給你。 – serakfalcon