我使用 Ubuntu+php+unixodbc+mdbtools 来处理 .mdb 文件。
每件事(连接+选择)都工作得很好,但插入或更新语句。
我的代码是这样的:
$mdbConnection = new \PDO("odbc:mdbdriver",$user , $password , array('dbname' =>$FileName) );
$SelectResult = $mdbConnection->query("Select * from Zone");
$UpdateResult = $mdbConnection->query("Update Zone Set ShahrCode = 99");
$SelectResult
返回正确的结果,但第二个抛出一个错误,导致 apache 出现段错误。
我用 isql 命令测试它。运行 Select 语句成功,但更新失败。
#isql mdbdriver
+---------------------------------------+
| Connected! |
| |
| sql-statement |
| help [tablename] |
| quit |
| |
+---------------------------------------+
SQL>Update Zone Set ShahrCode = 99
Error at Line : syntax error near Update
syntax error near Update
Got no result for 'Update Zone Set ShahrCode = 99' command
[08001][unixODBC]Couldn't parse SQL
[ISQL]ERROR: Could not SQLExecute
Or
SQL> Update [Zone] Set ShahrCode = 99
Error at Line : syntax error near Update
syntax error near Update
Got no result for 'Update [Zone] Set ShahrCode = 99' command
[ISQL]ERROR: Could not SQLExecute
我应该如何修复这个错误?
谢谢大家
就我个人而言,我不会花费大量时间尝试让 PHP + mdb_tools + unixODBC 可靠地协同工作。我曾多次尝试过,尽管我尽了最大的努力,但还是很不成功。
我的建议是:
如果在 Access .mdb 文件中维护数据是一项硬性要求,那么必须假设该项目涉及 Windows 计算机。在这种情况下,我建议您在 Windows 计算机上运行 PHP 代码,并使用 COM_DOTNET 来操作 Access 数据库(通过 Windows ODBC 使用ADODB.Connection
和相关对象)。
如果在 Linux 上运行 PHP 代码是一项严格要求,那么就很有必要将数据从 Access .mdb 移动到其他更适合 PHP 的数据库中。 (MySQL 将是更常见的选择之一。)
如果 1. 和 2. 都是严格要求,那么最好的选择可能是将 .mdb 文件移动到 Windows 计算机并使用ODBTP从 Linux 计算机上运行的 PHP 代码操作 .mdb 文件。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)