php - MDBTools 驱动程序在 MS Acess 备忘录数据类型上无法正常工作
问题描述
我正在尝试在将格式化的 MS Access 数据库上传到服务器后读取它们,以将其中的数据存储到 MySQL 服务器中。该数据库包含 memo 数据类型,通过使用带有 MDBTools 和 PDO 的 unixODBC 是不可读的。
我在 ubuntu18.04.1 服务器上运行 PHP 7.2.17-1,安装了 unixODBC 并且 PDO 库启动并运行,由于它无法读取备忘录数据类型,我从这里接受了一个建议,而不是使用 PDO 类进行操作访问数据库,我使用ODBC 函数来完成这项工作。它在一定程度上显示了修剪后的值,但没有显示正确的文本,它也将数字转换为浮点值。
例子:
以前,我的代码使用不获取备忘录数据类型的 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 函数,它检索备忘录数据类型的修剪值并将数字转换为浮点数,在十进制值之前附加多个零。
$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,并尝试将查询列转换为 varchar(200),这会在建立连接时产生错误,这种情况下可能不支持。
我期望 ODBC 函数返回完整长度的备忘录数据类型字符串,但它显示修剪后的值,以及作为数字而不是浮点值返回的数字数据类型。
解决方案
推荐阅读
- firebase - 如何在 Flutter 的抽屉小部件中更新用户的个人资料名称?
- javascript - 为什么读取的参数为true?
- wordpress - 如何删除主菜单上的多个突出显示并且只有第一个或一个活动?
- php - 如何修复 PHP 中的表情符号打印问题?
- android - Android 自定义编辑文本值被另一个自定义编辑文本更改
- java - 将 Java/GRPC 应用程序从 Maven 迁移到 Bazel(由 docker 提供支持)
- javascript - 无法使用 jQuery 正确提交动态创建的表单
- linux - 查找在 Spring Boot 应用程序中加载的所有类时出错
- python-3.x - current_user.is_authenticated 始终为 False(TACACS 和 flask_login)
- c++ - 警告:基于范围的 for 循环是 C++11 扩展 [-Wc++11-extensions]