加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

Zend PDO ODBC数据库选择

发布时间:2020-12-13 17:24:51 所属栏目:PHP教程 来源:网络整理
导读:我正在尝试调整Zend Skeleton App以使用ODBC连接.我可以在Zend之外设置一个PDO连接(相同的表,服务器,一切),如下所示: new PDO('odbc:DRIVER={iSeries Access ODBC Driver};SYSTEM=serverName;HOSTNAME=serverName;DATABASE=databaseName;','userName','pass
我正在尝试调整Zend Skeleton App以使用ODBC连接.我可以在Zend之外设置一个PDO连接(相同的表,服务器,一切),如下所示:

new PDO('odbc:DRIVER={iSeries Access ODBC Driver};SYSTEM=<serverName>;HOSTNAME=<serverName>;DATABASE=<databaseName>;','<userName>','<password>');
$r = $this->conn->query('SELECT * FROM <databaseName>.<tableName>');

但是当我将此信息添加到global.php文件时:

'db' => array(
    'driver'         => 'Pdo','dsn'            => 'odbc:DRIVER={iSeries Access ODBC Driver};SYSTEM=<serverName>;HOSTNAME=<serverName>;DATABASE=<databaseName>;',),

在local.php中:

return array(
    'db' => array(
        'username' => '<userName>','password' => '<password>',);

我收到一个错误,表格未找到:

SQLSTATE[42S02]: Base table or view not found: 0 [IBM][iSeries Access ODBC Driver][DB2 UDB]SQL0204 - <tableName> in <userName - yes you read that right> type *FILE not found.

我相信这是因为我的前缀< databaseName>.< tableName>当查询通过Zend运行时,它被包装在双引号中.我无法解释为什么Zend在userName下查找我的表.但是,我无法让PDO识别没有前缀的表,即使我已经尝试过以我能想到的方式在PDO的初始化中声明我的数据库.

有没有办法让PDO实际获取数据库名称,所以我不需要前缀?或者有没有办法告诉Zend使用前缀(不会在带有表名的引号中混淆)?

如果我在这里使用了错误的语言,请原谅 – 当我在SQL和iSeries之间进行时,我在Schema,数据库,库,文件,表等之间会有点丢失.

我非常感谢你提供的任何帮助,Zend对我来说是新手.

解决方法

不熟悉PDO,因为我使用ibm_db2,但可以使用CL命令WRKRDBDIRE找到数据库名称.

使用* SQL命名,使用用户配置文件名称隐式限定非限定表名(SELECT * FROM TABLENAME).因此,如果SARAHK正在执行选择,它将成为SELECT * FROM SARAHK.TABLENAME.所以你看到的错误表明IBM我认为你有一个不合格的表名.

如果您可以将ODBC驱动程序配置为使用* SYSTEM命名,则它将使用库列表来查找非限定表名.

我是一名老派RPG程序员,所以我对传统名字比较熟悉;这是一个备忘单:

>图书馆 – >架构>文件 – >表>会员 – >没有SQL等价物 – 使用ALIAS

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读