zendframework死活都连不上数据库,三天了,急!!!!!!

christina11708 2013-02-12 12:23:43
/*
初学framework用的是zendframework1.11.10版本,按照视频一步一步来敲的但就是读不出数据库里的信息
用日志文件跟踪发现代码走到Bootstrap.php文件就断掉了死活跳不到IndexAction.php文件去,推测是适配器有问题,求教各位大神
*/
//Bootstrap.php
class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
{
public function __construct($app){
parent::__construct($app);
$url=constant"APPLICATION_PATH").DIRECTORY_SEPARATOR.'configs'.DIRECTORY_SEPARATOR.'application.ini';
$dbconfig = new Zend_Config_Ini($url,"mysql");
$db = Zend_Db::factory($dbconfig->db);
$db->query('SET NAMES UTF8');
Zend_Db_Table::setDefaultAdapter($db);
}
}
//application.ini
[production]
phpSettings.display_startup_errors = 0
phpSettings.display_errors = 0
includePaths.library = APPLICATION_PATH "/../library"
bootstrap.path = APPLICATION_PATH "/Bootstrap.php"
bootstrap.class = "Bootstrap"
appnamespace = "Application"
resources.frontController.controllerDirectory = APPLICATION_PATH "/controllers"
resources.frontController.params.displayExceptions = 0

[mysql]
db.adapter=PDO_MYSQL
db.params.host=localhost
db.params.username=root
db.params.password=root
db.params.dbname=testzfp

//IndexController.php
require APPLICATION_PATH.'/models/Message.php';
class IndexController extends Zend_Controller_Action
{
public function init()
{
/* Initialize action controller here */
}

public function indexAction()
{
// action body
$messModel=new Message();
$res=$messModel->fetchAll()->toArray();
print_r($res);
exit();
$this->render('index');
}
}
...全文
1117 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
baidu_31889849 2015-10-10
  • 打赏
  • 举报
回复
楼主,和你遇到了同样的问题,看韩老师的视频,也是弄了三天了都没有解决,求楼主指导。
u010419124 2013-05-10
  • 打赏
  • 举报
回复
Bootstrap叫启动类文件,其主要目的是连接数据库用的。但是在实际应用中并非所有的操作需要操作数据库,但是所有的操作又都要经过这个类,所以这里有优化的空间,也就是楼上所说的这个问题(不希望每个页面都启用一次数据库啊~有些页面不需要数据库)。 我们可以新建一个父类,叫做BaseController,该类的内容代码如下: <?php   class BaseController extends Zend_Controller_Action{    public function init(){    //初始化代码   $url = constant ( "APPLICATION_PATH" ) . DIRECTORY_SEPARATOR . 'configs' . DIRECTORY_SEPARATOR . 'application.ini';    $dbconfig = new Zend_Config_Ini ( $url, "mysql" );    $db = Zend_Db::factory ( $dbconfig->db );       $db->query ( 'SET NAMES UTF8' );    Zend_Db_Table::setDefaultAdapter ( $db );   }   } 如果某个控制器需要操作数据库 class xxController extends BaseController;[注意这个类本身的init方法要去掉,否则会报错。] 如果不需 class xxController extends Zend_Controller_Action{ } 我这个是在看韩顺平php视频中的韩顺平 PHP视频教程 z zend原理剖析中看到的,你可以看看,具体第几讲我也记不太清楚了,大概就是第三讲和第四讲之间,你如果还没有弄明白可以网上看看他的视频,韩老师这块讲的还算是很透彻的。
saruvy 2013-05-06
  • 打赏
  • 举报
回复
我也遇到这样的问题,2楼和3楼的方法可以了,但是我不希望每个页面都启用一次数据库啊~有些页面不需要数据库啊~~这个问题怎么破啊??
lw6288656 2013-04-07
  • 打赏
  • 举报
回复
问题解决了没有?
u010183855 2013-04-06
  • 打赏
  • 举报
回复
class Bootstrap extends Zend_Application_Bootstrap_Bootstrap { public function init() { /* Initialize action controller here */ $url=constant"APPLICATION_PATH").DIRECTORY_SEPARATOR.'configs'.DIRECTORY_SEPARATOR.'application.ini'; $dbconfig = new Zend_Config_Ini($url,"mysql"); $db = Zend_Db::factory($dbconfig->db); $db->query('SET NAMES UTF8'); Zend_Db_Table::setDefaultAdapter($db); } } 这样试一下看看
u010183855 2013-04-06
  • 打赏
  • 举报
回复
$url=constant"APPLICATION_PATH").DIRECTORY_SEPARATOR.'configs'.DIRECTORY_SEPARATOR.'application.ini'; $dbconfig = new Zend_Config_Ini($url,"mysql"); $db = Zend_Db::factory($dbconfig->db); $db->query('SET NAMES UTF8'); Zend_Db_Table::setDefaultAdapter($db); 把这段代码放到 class IndexController extends Zend_Controller_Action { public function init() {//放到这里就可以了 /* Initialize action controller here */ }
mjhgcxv 2013-02-21
  • 打赏
  • 举报
回复
我想我们有着相同的问题

4,250

社区成员

发帖
与我相关
我的任务
社区描述
国内外优秀PHP框架讨论学习
社区管理员
  • Framework
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧