我总是使用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)并且表中没有新插入,
当我在db表中尝试fetchAll
时,我收到应用程序错误。
答案 0 :(得分:1)
resources.db.adapter = PDO_PGSQL
您需要安装PDO_PGSQL。
答案 1 :(得分: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的方式是完全正确的!