Я пытаюсь прочитать отформатированные базы данных MS Access после загрузки их на сервер, чтобы сохранить данные в нем на сервере MySQL.База данных содержит тип данных memo, который при использовании unixODBC с MDBTools и PDO не был доступен для чтения.
У меня PHP 7.2.17-1, работающий на сервере ubuntu18.04.1 с установленным unixODBC, и библиотека PDO запущена и работает из-заневозможно прочитать типы данных memo, я взял предложение отсюда и вместо использования класса PDO при манипулировании базой данных доступа я использовал функции ODBC для выполнения этой работы.Он работал до такой степени, что отображал усеченные значения, но не отображал правильный текст, а также преобразовывал числа в плавающие значения.
Пример:
Ранее мой код выглядел так с использованиемКласс PDO, который не извлекал типы данных памятки.
<code>$query = 'SELECT * FROM Product';
$mdb_file = '/var/www/html/azam/Product.mdb';
$driver = 'MDBTools';
$dataSourceName = "odbc:Driver=$driver;DBQ=$mdb_file;";
$connection = new PDO($dataSourceName);
$result = $connection->query($query)->fetchAll(\PDO::FETCH_ASSOC);
print '<pre>';
print_r($result);
print '
'
Я использую функции ODBC Now, которые извлекают усеченные значения типов данных памятки и преобразовали числа в плавающее, добавляя нескольконули перед десятичным значением.
<code>$query = 'SELECT * FROM Product';
$mdb_file = '/var/www/html/azam/Product.mdb';
$connection = odbc_connect("Product.mdb","","");
$result = odbc_exec($connection,$query);
while($row = odbc_fetch_array($result))
{ echo "<pre>";
print_r($row);
echo "
";}
PS: я настроил odbc.ini как , предложил и попытался привести столбец запроса к varchar (200), которая выдает ошибку при установлении соединения, что, вероятно, не поддерживается в этом сценарии.
Я ожидаю, что функции ODBC вернут полную строку типа данных памятки, но она отображает усеченные значения, а также числовые данныетип, который будет возвращен как число, а не как число с плавающей запятой.