Мой класс 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.
Обходной путь в этой ситуации - блок try catch, который генерирует исключения для предупреждений. Не уверен, как это будет работать, и это звучит как еще один пост для меня.
Кроме того, @ здесь не вариант. Это генерирует предупреждение по причине. Я предпочитаю не засовывать голову в песок.
Обновление :
Я наконец разыскал запрос. Это был плохо сформированный оператор вставки. Несмотря на то, что подготовка не удалась и возникла ошибка, был возвращен действительный ресурс оператора, и сценарий продолжил генерировать исключение. Я использовал exec для вызова скрипта, содержащего неверный INSERT, но я не возвращал вывод скрипта, поэтому я никогда не видел ошибку.
Это все еще кажется мне глючным, но у меня нет времени заниматься этим дальше.