PHP odbc_connect для Pervasive SQL 2000i возвращает текстовые строки не более 10 символов

Я работаю в компании, которая купила DBA Manufacturing, и мне нужно извлечь некоторые значения из базы данных Pervasive SQL 2000i. К сожалению, нет никаких планов по обновлению БД, поэтому я должен сделать из-за того, что у меня есть. Я бегу 32 бит

Я смог сделать odbc_connect вызов в PHP к DSN на машине с Windows. Я использую PHP на Windows с NGINX.

<html>
<head>
<title>
Placeholder Title
</title>
</head>
<body>

<?php

// mb_internal_encoding("UTF-8");

// connect to the dbamfg DSN
$connect=odbc_connect("Driver={Pervasive ODBC Client Interface};ServerName=dbamfg.1583;ServerDSN=dbadefault;","","");

// query the users table for name and surname
$query = "select * from BKARINVL where BKAR_INVL_INVNM = 600100 order by bkar_invl_cntr ";

//Prepare the statement
$result = odbc_prepare ($connect, $query);
// execute the query
odbc_execute($result);

// fetch the data from the database
while(odbc_fetch_row($result)){

$SalesOrder = odbc_result($result, 1);
$InvLine = odbc_result($result, 2);
$EstShpDt = odbc_result($result, 3);
$ProdCode = odbc_result($result, 4);
$ProdDesc = odbc_result($result, 5);

echo ('<br />'.$InvLine.'<br />');
echo ($SalesOrder.'<br />');
echo ($EstShpDt.'<br />');
echo ($ProdCode.'<br />');
echo ($ProdDesc.'<br />');

}

// closing the connection
odbc_close($connect);
?>

</body>
</html>

Запрос возвращает числовые значения просто отлично. Когда дело доходит до текстовых столбцов, он возвращает 10 символов, а после этого показывает символы, которые отображаются неправильно.

вот пример:

1
600100
2015-05-31
020-0015-1
DIGITAL VI!2S��

2
600100
2015-05-31
020-0012-0
2 X 4 AUDI!5S��

3
600100
2015-05-31
020-0065-0
16-CKT LOW!8S��

Я взволнован и потрясен тем, что зашел так далеко! Исключительно быстро можно извлекать значения из Pervasive через соединение ODBC, и я чувствую, что очень близок к успеху. Мне просто нужно подтолкнуть в правильном направлении.

Все, что я пробовал до сих пор: я попытался установить внутреннюю кодировку страницы для нескольких различных наборов символов, включая UTF-8, Windows, ASCII и т. Д. Я также попытался установить флажок в параметрах настройки драйвера ODBC во время DSN Настройка в Windows с надписью «Использовать преобразование OEM / ANSI». Это только изменяет персонажей.

Другой ключ к этому заключается в том, что по какой-то причине, когда я вызываю строку подключения, используя System.Data.odbc в C # он возвращает запрос и текстовые значения полностью.

Я пытался использовать iconv преобразовать значения в UTF-8 и т. д. безрезультатно. Я пытался заставить заголовок отображать страницу в разных наборах символов. я пытался mb_detect_encoding() на odbc_result() и возвращаемое значение говорит UTF-8, но я предполагаю, что это должно быть. Должен быть кто-то, кто знает, как это исправить. Пожалуйста, кто-нибудь укажет мне правильное направление? Буду вечно благодарен!

Если что-то еще нужно будет добавить, чтобы решить эту проблему, я включу это по запросу. Спасибо!

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]