【问题标题】:unixODBC PHP Update statement errorunixODBC PHP 更新语句错误
【发布时间】:2014-06-21 13:40:07
【问题描述】:

我正在使用 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

或者

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

我应该如何解决这个错误? 谢谢大家

【问题讨论】:

  • 当您在 Access 中打开 Windows 操作系统上的 .mdb 文件时运行“Update Zone Set ShahrCode = 99”时,它是否有效或是否出现类似错误?
  • 否,在 Windows 操作系统上,该项目工作正常。

标签: php ms-access ubuntu unixodbc


【解决方案1】:

就我个人而言,我不会花很多时间尝试让 PHP + mdb_tools + unixODBC 可靠地协同工作。我已经尝试了好几次,尽管我尽了最大的努力,但都没有成功。

我的建议是:

  1. 如果在 Access .mdb 文件中维护您的数据是一项严格的要求,则必须假定 Windows 计算机参与该项目。在这种情况下,我建议您在 Windows 机器上运行 PHP 代码并使用 COM_DOTNET 来操作 Access 数据库(通过 Windows ODBC,使用 ADODB.Connection 和相关对象)。

  2. 1234563 (MySQL 将是更常见的选择之一。) 1234563 Linux 机器。

【讨论】:

  • 谢谢。但是所有三个选项都有一个限制。我之前尝试过ODBTP并且工作正常,但在这种情况下我不能使用它。当然我们在我们的项目中使用mysql,但是我们也需要生成 mdb 文件。
【解决方案2】:

我终于找到了解决办法:
mdbtools can not write to mdb files yet.

MDB Tools 目前对 Access 97 (Jet 3) 和 访问 2000/2002 (Jet 4) 格式。写支持目前正在 工作,第一次削减预计将包含在 0.6 释放。

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

  1. 使用 Jackcess 库创建一个简单的 java 项目。
  2. 为 java 应用程序启用 CLI 参数并做你想做的事 mdb 文件。
    • 您甚至可以使用 CLI 参数获取 mdb 文件路径。
  3. 编译java项目。
  4. 在 PHP 中你可以使用exec('cd path/to/javaproject;java -cp . YourJavaProject "mdbfilepath" "insert|update|or select"',$output);

【讨论】:

    猜你喜欢
    • 2012-10-11
    • 2011-05-03
    • 2016-12-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多