Это, вероятно, очень просто (я новичок), но я не смог найти ответ.
Я использую Linux, DB2 и PHP.
Мой простой запрос DB2 из PHP возвращает только строки с целочисленными значениями, но завершается с ошибкой «Fetch Failure» для чего-либо еще (varchar …).
Запрос работает с db2cli для всех значений:
echo «выберите COLUMN из TEST.TABLE» «| ./db2cli execsql -dsn SCHEMA
Но терпит неудачу в PHP:
$conn_string = "DRIVER={IBM DB2 ODBC DRIVER};DATABASE=$database;" .
"HOSTNAME=$hostname;PORT=$port;PROTOCOL=TCPIP;UID=$user;PWD=$passwd;";
$conn = db2_pconnect($conn_string, '', '');
if ($conn) {
$sql = 'select COLUMN from TEST.TABLE';
$options = array('cursor' => DB2_SCROLLABLE, 'binmode' => DB2_BINARY);
$stmt = db2_prepare($conn, $sql, $options);
if ($stmt) {
$result = db2_execute($stmt);
if (!$result) {
echo "exec errormsg: " .db2_stmt_errormsg($stmt);
}
$total_rows = db2_num_rows($stmt);
print "<br>Total rows: $total_rows";
for ($i = 0; $i < $total_rows; $i++) {
$row = db2_fetch_array($stmt);
print "<br>$row[0]";
}
} else {
echo "exec erromsg: " . db2_stmt_erromsg($stmt);
}
db2_close($conn);
} else {
echo "failed #2 ".db2_conn_errormsg();
}}
Он будет отображать любые строки с целочисленными значениями, но пустые строки для всего остального с ошибкой «Fetch Failure» в журнале. Я пробовал db2_fetch_array, db2_fetch_assoc и db2_fetch_both.
Примечание: позже я добавил лишние вещи, такие как db2_scrollable и db2_num_rows, чтобы попытаться решить проблему. Неудачно.
РЕДАКТИРОВАТЬ: Я могу даже FILTER по значениям, которые не будут отображаться (столбец SELECT WHERE column = ‘value’), и он вернет правильное количество строк.
Задача ещё не решена.
Других решений пока нет …