我在“IndexController.php”中有以下代码:
$sql = 'SELECT * FROM ?';
$stmt = new Zend_Db_Statement_Mysqli($db, $sql);
$this->view->projects = $stmt->execute(array('projects'));
...它只用于从数据库中检索所有项目对象并将它们传递给视图。 但是,当我运行此代码时,我收到以下错误:
Notice: Undefined variable: db in C:\wamp\www\PROJECTS_Zend\projectManager\application\controllers\IndexController.php on line 19
Fatal error: Call to a member function quoteIdentifier() on a non-object in C:\wamp\www\PROJECTS_Zend\projectManager\library\Zend\library\Zend\Db\Statement.php on line 181
我不确定变量db是什么,或者它应该是什么,但是如果你有任何相关信息,那么如果你能启发我会很高兴。
答案 0 :(得分:2)
Zend,Kohana和Codeigniter等MVC框架中的查询应该在“Model”类中完成。
不是控制器类!
模型类处理来自数据存储(如数据库或文件)的数据。
你应该在Model类中执行此操作,因为它将具有从Zend_db类扩展的所有功能
$ db是您的变量,它包含您连接到数据库的所有详细信息(主机名,用户名,通行证,数据库名称)
您必须在代码中先前定义
关于MVC的另一件事
希望这会有所帮助:)
答案 1 :(得分:1)
这样你就破坏了MVC的整个M(odel)概念。
无论如何,$ db是Zend_Db的一个实例。我建议你阅读http://framework.zend.com/manual/en/zend.db.adapter.html。
虽然这可能导致糟糕的代码:
$db = new Zend_Db_Adapter_Pdo_Mysql(array(
'host' => '127.0.0.1',
'username' => 'webuser',
'password' => 'xxxxxxxx',
'dbname' => 'test'
));