我正在尝试将格式化的MS Access数据库上传到服务器上以将其中的数据存储到MySQL服务器后,再读取它们。该数据库包含备注数据类型,该备注数据类型通过与MDBTools一起使用unixODBC和PDO无法读取。
我在装有unixODBC的ubuntu18.04.1服务器上运行了PHP 7.2.17-1,并启动并运行了PDO库,由于无法读取备忘数据类型,我建议使用 from here,而不是使用PDO类来操纵Access数据库时,我使用了ODBC Functions来完成这项工作。它可以在某种程度上显示出修剪后的值,但不能显示正确的文本,并且可以将数字转换为浮点值。
示例:
以前,我的代码使用不获取备忘数据类型的PDO类看起来像这样。
$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 '</pre>'
我正在使用ODBC Functions Now,该函数可以检索备忘录数据类型的修剪值,并将转换后的数字转换为浮点型,在十进制值之前附加多个零。
$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 "</pre>";
}
PS:我将odbc.ini配置为 suggested ,并尝试将查询列强制转换为varchar(200),这会在建立连接时产生错误,这种情况下可能不支持。
我期望ODBC函数返回备注数据类型的全长字符串,但是它显示了修整后的值,并且数字数据类型也将以数字形式返回,而不是以浮点值形式返回。