Al
Новичок
Неверное отображение полей типа raw
Добрый день.
Сервер под Oracle EL 5, установлены Oracle 10.2.0.4.0, Apache 2.2.8, PHP 5.2.6
Коннект чудесный, русские буквы показываются корректно.
Но есть у нас поля в таблице - тип у них raw(16) заполняются обычно с помощью функции sys_guid, так вот если их вывести в браузер (простейшим примером из доки к модулю oci8) - то получим из "38DCF27ECFFF42A8899259900391D195" - "8Ьт~ПяBЁ‰’Yђ‘С•", а это критично, ибо это первичные ключи БД.
Этот же запрос, выполененый на сервере из sqlplus с переменными окружения идентичными Апачу - возвращает все корректно, так что мне думается что преобразование идет в php.
Собственно вопрос - что можно/нужно сделать чтобы избавиться от этой ошибки?
Код создания тестовой таблички:
Код скрипта для теста
Спасибо.
Добрый день.
Сервер под Oracle EL 5, установлены Oracle 10.2.0.4.0, Apache 2.2.8, PHP 5.2.6
Коннект чудесный, русские буквы показываются корректно.
Но есть у нас поля в таблице - тип у них raw(16) заполняются обычно с помощью функции sys_guid, так вот если их вывести в браузер (простейшим примером из доки к модулю oci8) - то получим из "38DCF27ECFFF42A8899259900391D195" - "8Ьт~ПяBЁ‰’Yђ‘С•", а это критично, ибо это первичные ключи БД.
Этот же запрос, выполененый на сервере из sqlplus с переменными окружения идентичными Апачу - возвращает все корректно, так что мне думается что преобразование идет в php.
Собственно вопрос - что можно/нужно сделать чтобы избавиться от этой ошибки?
Код создания тестовой таблички:
PHP:
create table raw_test (id raw(16))
/
insert into raw_test select sys_guid() from all_objects where rownum < 11
/
commit
/
PHP:
<?php
header("Content-Type: text/html; charset=windows-1251");
$conn = oci_pconnect('insh', 'insh', '9DEMODEV');
if (!$conn) {
$e = oci_error();
print htmlentities($e['message']);
exit;
}
$query = 'select * from raw_test';
$stid = oci_parse($conn, $query);
if (!$stid) {
$e = oci_error($conn);
print htmlentities($e['message']);
exit;
}
$r = oci_execute($stid, OCI_DEFAULT);
if (!$r) {
$e = oci_error($stid);
echo htmlentities($e['message']);
exit;
}
print '<table border="1">';
while ($row = oci_fetch_array($stid, OCI_RETURN_NULLS)) {
print '<tr>';
foreach ($row as $item) {
print '<td>'.($item?$item:' ').'</td>';
}
print '</tr>';
}
print '</table>';
oci_close($conn);
?>