PHP IBM SQL Оператор DB2 обновляется только частично без сообщений об ошибках - PullRequest
0 голосов
/ 29 февраля 2012

Код:

    $sql =      'UPDATE library/tablename ' .
           'SET foo1 = \'THIS IS A TEST\', foo2 = 1234567890, foo3 = 1234'.
           'WHERE foo4 = 165436';

    $stmt = db2_prepare($dbConn, $sql)
        or die("Error: Unable to prepare statement");

    $exec = db2_execute($stmt);

Я запускаю это в PHP, и после его выполнения я иду, чтобы посмотреть на таблицу, и вижу, что поле foo1 изменилось, но foo2 и foo3 остаются их значениями по умолчанию, что равно нулю.

Если я запускаю оператор $ sql из "strsql" на терминале IBM, он запускается, и все поля обновляются до значений, которые я указал. Кто-нибудь имеет представление о том, что здесь происходит? Это привело меня в тупик на несколько часов.

1 Ответ

1 голос
/ 29 февраля 2012

После запуска выполнения вы, вероятно, захотите проверить значение SQLSTATE .Это покажет вам фактическую ошибку, которую выдает DB2.

Вы можете получить SQLSTATE в PHP, используя db2_stmt_error(), что даст вам состояние SQL последнего выполнения (если вы передаете определенный ресурс, последнее выполнение на этом ресурсе).

Если вы хотите вывести читаемое человеком сообщение об ошибке SQL, вы можете использовать db2_stmt_errormsg(), который выведет SQLSTATE и соответствующую строку сообщения об ошибке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...