В моем классе DB2 есть функция подготовки:
public function prepare() { if (FALSE === ($this->stmt = db2_prepare($this->conn, $this->sql))) { throw new Exception($this->get_error()); } return $this; }
Некоторые загадочные запросы вызывают предупреждение в журнале ошибок php:
[26-Jan-2012 11:17:32] PHP Warning: db2_prepare(): Statement Prepare Failed in /<path to file>/Db2.php on line 178
db2_prepare не возвращает FALSE. В противном случае будет выбрано исключение, и я получаю обратную трассировку.
Я не правильно тестирую возвращаемое значение db2_prepare, чтобы поймать законные ошибки / предупреждения, или у db2_prepare есть ошибка?
Это выполняется в стеке Zend Server на i5 / iseries / as400.
Обходным путем в этой ситуации будет блок catch try, который генерирует исключения из предупреждений. Не уверен, как это будет работать, и это звучит как еще один пост для меня.
Кроме того, @ здесь не вариант. Это порождает предупреждение по какой-то причине. Я предпочитаю не засунуть голову в песок.
Обновление : я, наконец, отслеживал запрос. Это было плохо сформированное заявление вставки. Несмотря на то, что подготовка не сработала и сгенерировала ошибку, был возвращен действительный ресурс оператора, и скрипт продолжал генерировать исключение. Я использовал exec для вызова скрипта, содержащего плохой INSERT, но я не возвращал результат скрипта, поэтому я никогда не видел ошибки.
Мне все еще кажется багги, но у меня нет времени, чтобы продолжить его.