КодексPHP - db2_bind_param Опишите Param Ошибка
$options = array('autocommit' => DB2_AUTOCOMMIT_OFF);
$stmt = db2_prepare($connection, "CALL LABLIB2.AR0011CL('?','?','?')");
$connection = db2_connect (AS400_DATABASE, IS_USER_NAME, IS_USER_PASS, $options);
if (! $connection) {
handleError("Unable to connect to the database.", 2);
}
$REF = "1234567891123456789122";
$PSSN = '123456789';
$SSSN = 123456789;
db2_bind_param($stmt, 1, 'REF', DB2_PARAM_INOUT, DB2_CHAR, 22); //ERROR
db2_bind_param($stmt, 2, "PSSN", DB2_PARAM_INOUT, DB2_CHAR, 9); //ERROR
db2_bind_param($stmt, 3, "SSSN", DB2_PARAM_INOUT, DB2_CHAR, 9); //ERROR
db2_execute($stmt);
Я вижу в this link ответ был исправить версии PTF. Однако это относится к «сложным запросам». Это очень простой программный вызов.
Этот код работает отлично в наших живых ISeries, который находится на PHP 5.2.17
Этот код не работает в нашем развитии ISeries, которая в настоящее время на PHP 5.4.0. Строки db2_bind_param вызывают одно и то же сообщение об ошибке.
Было ли существенное изменение в 5.2.x до 5.4? Или это совершенно не связано?
Я пробовал различные методы объявления переменных: одинарные кавычки, двойные кавычки, кавычки ... но ничто из этого не изменилось из-за слабо типизированного синтаксиса PHP.
Также попытался удалить одинарные кавычки вокруг каждого параметра в вызове SQL, который затем просто генерирует ошибку во время подготовки.
Можете ли вы запустить php_info на обоих серверах и проверить, имеют ли модули DB2 одни и те же версии? какая версия ? –
Какие сообщения об ошибках выбрасываются? Если у вас есть номера версий, упомянутые в первом комментарии, вы можете проверить [changelogs] (http://pecl.php.net/package/ibm_db2). – emolah
@adam _ "Также попытался удалить одиночные кавычки вокруг каждого параметра в SQL-вызове, который затем просто генерирует ошибку во время подготовки." _ И какая ошибка будет? Я бы сказал, что вы должны * не * иметь котировки вокруг маркеров параметров. – mustaccio