【问题标题】:PDO_ODBC accessing IBM DB2 tables with special characters in the table namesPDO_ODBC 使用表名中的特殊字符访问 IBM DB2 表
【发布时间】:2018-05-18 08:10:19
【问题描述】:

我正在 as/400 上处理 DB2 表。我正在尝试对其运行基本查询,但表名中包含.。例如:my.table 是表名。

问题是 PDO 认为我正在用我的表名 table 指定数据库名称 my。因此,准备好的语句失败并说数据库my 中不存在这样的表table。更改表名不是一种选择。

在表名中处理句点的最佳方法是什么?我尝试过逃离这段时期,但没有任何成功。

这是我的问题的一些示例代码:

$sql= "select * from '[THE.TABLE]'";
        try {
            $statement = $this->db->query($sql);
            $results = $statement->execute();
            foreach ($results as $result) {
                print_r($result);
            }
            exit;
        }
        catch (\Exception $e)
        {
            //log issue and other stuff
        }

应用程序在 Zend Framework 2 中运行。

【问题讨论】:

  • 尝试在表名周围加上反引号:`my.table`
  • 我也试过反勾号。它没有用。
  • 恕我直言,我不认为这是重复的,因为我没有使用 MySQL,而是通过 ODBC 使用 DB2。我对这种类型的数据库访问相当陌生,但我已经尝试过引号和反引号,但没有成功。
  • PDO 对表名一无所知,也不关心它们。你得到什么错误?

标签: php pdo zend-framework2 db2 odbc


【解决方案1】:

我的立场是正确的。正如 aynber 在评论中提到的,解决方案是使用正确转义的双引号。答案可以在针对 MySQL 的问题中找到。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-23
    • 2021-04-23
    • 1970-01-01
    • 2015-04-16
    相关资源
    最近更新 更多