我是Zend框架的新手。我正在尝试使用Zend Registry连接数据库,但我无法。
这是我的引导类。
<?php
class Bootstrap extends Zend_Application_Bootstrap_Bootstrap {
public function _initDb(){
$db = new Zend_Db_Adapter_Pdo_Mysql(
array(
'host' => 'localhost',
'username' => 'ragn',
'password' => 'app',
'dbname' => 'apple'
)
);
Zend_Db_Table_Abstract::setDefaultAdapter($db);
Zend_Registry::set('db', $db);
}
}
?>
这是我的IndexController
课程。
class IndexController extends Zend_Controller_Action {
public function init()
{
/* Initialize action controller here */
}
public function indexAction()
{
$db = Zend_Registry::get('dbadapter');
$select = new Zend_Db_Select($db);
$select = $db->select();
$select = $db->select() -> from(
array('client' => 'client'),
array ('idclient')) -> join(array('apartmentclient' => 'apartmentclient'),
'client.idclient = apartmentclient.idclient',
array ('idapartment')) -> join(array('description' => 'description'),
'apartmentclient.idapartment = description.idapartment',array ('title'));
$stmt = $select->query();
$result = $stmt->fetchAll();
$Settext = array();
$SetName = array();
$SetName = "$result[2]";
$Settext = "Hi!Can you please provide feedback for the apartment";
$this->view->Settext = $Settext." ".$SetName;
}
}
我也有详细的application.ini文件。
resources.db.adapter = PDO_MYSQL
resources.db.isDefaultAdapter = true
resources.db.params.host = localhost
resources.db.params.username = ragn
resources.db.params.password = app
resources.db.params.dbname = apple
有人能指出我正确的方向吗?
答案 0 :(得分:3)
在您的代码中出现错误。您可以使用密钥“db”在注册表中设置数据库:
Zend_Registry::set('db', $db);
但您尝试使用密钥'dbadapter'检索它:
$db = Zend_Registry::get('dbadapter');
应该是这样的:
$db = Zend_Registry::get('db');
此外这条线无用:
$select = $db->select();
这一行:
$SetName = "$result[2]";
可以是这样的:
$SetName = $result[2];
既然你写了这一行:
$result = $stmt->fetchAll();
你必须在循环中检索值。
要发现错误,您必须使用调试器,但如果您不知道如何使用它,最简单的方法是使用函数die();
。沿着您的代码移动此函数,当您发现脚本没有停止并返回您编写的错误时,您发现了有问题的行。
答案 1 :(得分:1)
首先,您可以从引导程序中删除方法_initDb()。由于ZF通过阅读你的application.ini
为你做这件事其次,您不需要将数据库存储在注册表中,因为存储在注册表中的目的是从您喜欢的任何地方访问某些内容,只需通过
即可实现。$db = Zend_Db_Table::getDefaultAdapter();