首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >unixODBC PHP语句错误

unixODBC PHP语句错误
EN

Stack Overflow用户
提问于 2014-06-21 13:40:07
回答 2查看 1.2K关注 0票数 2

我使用Ubuntu+php+unixodbc+mdbtools处理.mdb文件。

每件事(connection+select)都很好,但是插入或更新语句。

我的代码是这样的:

代码语言:javascript
复制
$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 command.Running选择语句进行测试,但没有成功。

代码语言:javascript
复制
#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

代码语言:javascript
复制
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

我应该如何纠正这个错误?谢谢大家

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-06-25 20:49:57

最后,我找到了一个解决办法:

mdbtools还不能写入mdb文件。

MDB工具目前对Access 97 (Jet 3)和Access 2000/2002 (Jet 4)格式有只读支持。目前正在编写支持,预期第一个剪切将包含在0.6版本中。

使用简单编译的java应用程序是我们的解决方案。

  1. 使用杰克塞库创建一个简单的java项目。
  2. 为java应用程序启用CLI参数,并对mdb文件执行所需的操作。
    • 您甚至可以使用CLI参数获取mdb文件路径。

  1. 编译java项目。
  2. 在PHP中,您可以使用exec('cd path/to/javaproject;java -cp . YourJavaProject "mdbfilepath" "insert|update|or select"',$output);
票数 0
EN

Stack Overflow用户

发布于 2014-06-21 14:25:33

就我个人而言,我不会花很多时间试图让PHP + mdb_tools + unixODBC可靠地协同工作。尽管我尽了最大的努力,我还是试了好几次,结果都很失败。

我的建议是:

  1. 如果在Access .mdb文件中维护您的数据是一个明确的要求,那么我们必须假定该项目涉及到Windows。在这种情况下,我建议您在Windows机器上运行PHP代码,并使用COM_DOTNET操作Access数据库(通过Windows使用ADODB.Connection和相关对象)。
  2. 如果在Linux上运行PHP代码是一个明确的要求,那么就有充分的理由将数据从Access .mdb转移到其他更适合PHP的数据库中。(MySQL将是比较常见的选择之一。)
  3. 如果1和2都是明确的要求,那么最好的选择可能是将.mdb文件移动到Windows,并使用ODBTP从运行在Linux机器上的.mdb代码中操作.mdb文件。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24342165

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档