unixODBC PHP更新语句错误
作者:互联网
我正在使用Ubuntu php unixodbc mdbtools处理.mdb文件.
每件事(连接选择)都可以正常工作,但可以使用Insert或Update语句.
我的代码是这样的:
$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
要么
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数据库(通过使用ADODB.Connection和相关对象的Windows ODBC).
>如果在Linux上运行PHP代码是绝对必要的,那么就很有必要将您的数据从Access .mdb移到其他更适合PHP的数据库中. (MySQL将是较常见的选择之一.)
>如果1.和2.都是确定的要求,那么最好的选择可能是将.mdb文件移动到Windows机器上,并使用ODBTP从Linux机器上运行的PHP代码操纵.mdb文件.
标签:php,ms-access,ubuntu,unixodbc 来源: https://codeday.me/bug/20191011/1893686.html