1

我一直使用 Application_Model_DbTable 来处理数据库,但我使用的是 MySql。我像这样配置了我的 application.ini:

resources.db.adapter = PDO_MYSQL 
resources.db.params.host = localhost
resources.db.params.username = admin    
resources.db.params.password = 12345
resources.db.params.dbname = daedu
resources.db.params.charset = utf8

并使用了 dbtable 的标准函数,例如 fetchAll 或 insert。如何获得相同的结果,但使用 PostgreSQL?

我已经安装了 PostgreSQL,并且通过 pgAdmin III 我已经制作了数据库和表。问题是如何使用 db-table 将它连接到 Zend?

我是这样配置的:

resources.db.adapter = PDO_PGSQL 
resources.db.params.host = localhost
resources.db.params.port = 5432
resources.db.params.username = postgres 
resources.db.params.password = 12345
resources.db.params.dbname = postgres
resources.db.params.charset = utf8

我通过 dbtable 使用它,如下所示:

class Application_Model_DbTable_Postrgres extends Zend_Db_Table_Abstract
{
    protected $_name = 'postgres';

    public function insert(){
        $data = array(
            'name' => "dan"
        );

        $this->insert($data);
    }
}

在控制器中:

$f = new Application_Model_DbTable_Postrgres();
$f->insert();

但是页面没有打开(错误是:net::ERR_EMPTY_RESPONSE)并且表中没有新的插入,当我尝试fetchAll在 db 表中时,我得到应用程序错误。

4

2 回答 2

1

解决了问题!如何?我在 public/index.php 文件中打开了开发模式:

// Define application environment
defined('APPLICATION_ENV')
    || define('APPLICATION_ENV', (getenv('APPLICATION_ENV') ? getenv('APPLICATION_ENV') : 'development'));

错误显示我的表中没有 Prymary Key。我用 SQl 添加了它,它是!一切正常!所以这种将 Zend 连接到 PostgreSQL 的方式是完全正确的!

于 2013-01-05T17:12:29.573 回答
1
resources.db.adapter = PDO_PGSQL

您需要安装PDO_PGSQL

于 2013-01-04T21:19:03.007 回答