Zend PDO ODBC数据库选择

发布时间:2022-04-30 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了Zend PDO ODBC数据库选择脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试调整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

脚本宝典总结

以上是脚本宝典为你收集整理的Zend PDO ODBC数据库选择全部内容,希望文章能够帮你解决Zend PDO ODBC数据库选择所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。