Это запрос на подтверждение / уточнение на основе очень легко пропущенного комментария за 6 лет go в PHP. net руководстве для PDO :: prepare, которое у меня есть. не видел обсуждаемых в другом месте (даже в отличном блоге phpdelusion). Это такая мощная возможность, если это правда, что я чувствую, что заслуживает немного более широкого охвата и выделения поиска для других (или нуждается в опровержении, если нет).
Вот комментарий (Хейли Уотсон):
Можно заранее подготовить несколько заявлений против одного соединения. Пока это соединение остается открытым, операторы могут выполняться и извлекаться из любого числа в любом порядке; их шаги "prepare-execute-fetch" могут чередоваться любым подходящим способом.
Так что, если вы, вероятно, будете часто использовать несколько операторов (возможно, в пределах oop транзакций), вам может понравиться рассмотреть вопрос о подготовке всех утверждений, которые вы будете использовать заранее.
У меня есть код, который должен работать как (псевдокод):
foreach (fetchAll row with PDO) {
process row results
if (condition)
update table with processed results
else
delete row no longer needed
}
Согласно этому комментарию, я может создать ДВЕ подготовленные операторы ДО l oop, один для запроса на обновление и один для запроса на удаление, а затем выполнить (только) в пределах l oop. Пока дескрипторы различны и сохраняются, соединение должно кэшировать оба, я могу использовать их взаимозаменяемо, и мне не нужно было бы делать какие-либо операторы SQL, анализирующие INSIDE l oop, что было бы очень неэффективно:
// do statement prepare/execute/fetchAll for main loop, then...
$update_stmt = $PDO->prepare($update_query);
$delete_stmt = $PDO->prepare($delete_query);
foreach (fetchAll row) {
process row results
if (condition)
$update_stmt->execute(some_processed_values);
else
$delete_stmt->execute(some_other_values);
}
Поскольку большинство вопросов здесь обсуждают только использование одного подготовленного оператора за раз, и это имеет прекрасные последствия для эффективности кода, если его широко применять, кто-то хотел бы подтвердить, что это действительно так (по крайней мере, из * 1028) *)? Если это так, я думаю, что другие полезные приложения для этой формы кода могут быть использованы в решениях.