2017-02-20 21 views
1

Есть ли такая вещь, как «выполненный» флаг для PDOStatement (PDOStatement), чтобы убедиться, что оператор выполнен (путем вызова PDOStatement::execute())? Или я вынужден просто установить свой собственный флаг?Есть ли флаг «Выполненный» PDOS?

Судя по документации, не существует флага (единственное зарегистрированное свойство - $queryString) - но я думал, что все еще спрашиваю, прежде чем делать это вручную. В основном, чтобы отличить подготовленные от уже выполненных заявлений.

+0

Интересный вопрос. Похоже, их нет. Хотя вы, кажется, единственный человек, которому нужен такой флаг. –

ответ

4

После того, как инструкция подготовлена, вы можете выполнить ее несколько раз, поэтому, возможно, строители не думали, что такой флаг будет полезен, и лично мне тоже будет интересно узнать о вашем случае использования.

Но это возможно: используя PDOStatement::errorCode, вы можете получить код ошибки последнего оператора. Эта функция вернет строку exmpty, когда оператор еще не выполнен, и будет заполнен кодом ошибки (или 00000 без ошибок) после выполнения инструкции.

+0

Я думаю, это единственный способ сказать! Я знал, что его можно повторно использовать/выполнять несколько раз, но я хотел избежать повторного выполнения подготовленного оператора, который передается/не выполняется сразу. – Katai

+1

@Katai, почему вы хотите передать готовое заявление вместо того, чтобы передавать его результат? Опираясь на недокументированные трюки, вы знаете скользкое дело. –

+0

@YourCommonSense Чтобы разрешить позднюю привязку параметров перед выполнением (например, установить ограничение/смещение при пейджинге). – Katai

0

Нет, нет. Вы можете повторно использовать PDOStatement, который используется для использования с PDO:prepare.