Во избежание ненужной информации мой код примерно выглядит следующим образом:
$db = new PDO(DSN, DB_USER, DB_PW);
$sql1 = "SELECT * FROM Table1";
// fetching the first result
$stt1 = $db->prepare($sql1);
if ($stt1->execute()) {
$result = $stt1->fetch(PDO::FETCH_ASSOC);
}
// doing update in the middle by using the SAME $db object, but different statement variable
$sql2 = "UPDATE Table1 SET field1 = 'footest1' WHERE id = 1";
$stt2 = $db->prepare($sql2);
$stt2->execute();
// fetching the next result
$result = $stt1->fetch(PDO::FETCH_ASSOC);
Хорошо, я запустил это, и, к моему удивлению, когда я получаю свой следующий результат, я получаю ложь. Прерывает ли подготовка другого оператора ($ stt2) в середине мой уже созданный $ stt1?
И у меня есть 15+ записей в этой таблице.
Обновление: похоже, что метод execute объекта оператора является причиной, по которой моя вторая выборка возвращает false. Чтобы это работало, повторный вызов $ stt1-> execute () перед выборкой во второй раз решает эту проблему ... Но это показывает, что существует некоторая связь через метод execute между всеми объектами оператора?