У меня возникла эта проблема, которая полностью меня превзошла. Вот мой шаблон исполнения. Вызовы PDO вложены в петли foreach.
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 в одной таблице в цикле, потому что у меня никогда не было этой проблемы в другом месте. Заранее спасибо!