主要内容:使用Zend Framework访问数据库,本文把整个过程一步一步描述出来,已让初学者更加明白,更容易上手。
1 设置数据库
1.1 创建数据库zfaction
在MySQL中创建数据库zfaction: create database zfaction;
1.2 配置数据库连接配置
<工程目录> /config/config.ini,内容如下
[general]
db.adapter=PDO_MYSQL
db.config.host=localhost
db.config.username=root
db.config.password=root
db.config.dbname=zfaction
各个参数不言自明,这里不一一细说。
2 连接数据库
2.1 在Initializer类(Initializer.php)中初始化数据库连接
public function initDb()
{
// 配置数据库连接
$adapter = $this->_config->db->adapter;
$dbparams = $this->_config->db->config->toArray();
$db = Zend_Db::factory($adapter, $dbparams);
$db->setFetchMode(Zend_Db::FETCH_OBJ);
$db->query("SET NAMES 'utf8'");
$db->query("SET CHARACTER SET 'utf8'");
Zend_Db_Table::setDefaultAdapter($db);
}
3 创建实体模型
3.1 建立表
在MySQL的中zfaction数据库中建立Places表并插入数据
DROP TABLE IF EXISTS `places`;
CREATE TABLE `places` (
`id` int(11) NOT NULL auto_increment,
`date_created` datetime NOT NULL,
`date_updated` datetime NOT NULL,
`created_by` int(11) default '-1',
`name` varchar(100) NOT NULL,
`address1` varchar(100) default NULL,
`address2` varchar(100) default NULL,
`town` varchar(75) default NULL,
`county` varchar(75) default NULL,
`postcode` varchar(30) default NULL,
`country` varchar(75) default NULL,
`information` mediumtext,
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=4 DEFAULT CHARSET=latin1;
INSERT INTO `places` (`id`,`date_created`,`date_updated`,`created_by`,`name`,`address1`,`address2`,`town`,`county`,`postcode`,`country`,`information`) VALUES ('1','2007-02-14 00:00:00','2007-02-14 00:00:00','1','London Zoo','Regent/'s Park',NULL,'London','','NW1 4RY',NULL,NULL);
INSERT INTO `places` (`id`,`date_created`,`date_updated`,`created_by`,`name`,`address1`,`address2`,`town`,`county`,`postcode`,`country`,`information`) VALUES ('2','2007-02-14 00:00:00','2007-02-14 00:00:00','1','Alton Towers','Regent/'s Park',NULL,'Alton','Staffordshire','ST10 4DB',NULL,NULL);
INSERT INTO `places` (`id`,`date_created`,`date_updated`,`created_by`,`name`,`address1`,`address2`,`town`,`county`,`postcode`,`country`,`information`) VALUES ('3','2007-02-14 00:00:00','2007-02-14 00:00:00','2','Coughton Court','',NULL,'Alcester','Warwickshire','B49 5JA',NULL,NULL);
3.2 建立实体模型
在Zend Studio中使用New/Zend Framework Item建立Zend Table,使用Places.php作为php文件名,这个文件很简单,_name属性初始化值为数据库对应的表名。
3.3 在Index控制器(IndexController.php)中访问数据表
// step3 访问数据库
$placesDao = new Places();
$this->view->places = $placesDao->fetchAll();
3.4 在视图(index.phtml)中显示数据
<h3>step 3: 通过mvc模式访问数据库
h3>
<table>
<thead>
<tr><td>id
td><td>name
td>
tr>
thead> <tbody>
php foreach ($this->places as $place) {?> <tr><td>
php echo $place->id;?>
td><td>
php echo $place->name;?>
td>
tr>
php }?>
tbody>
table>
在浏览器中输入http://zftest.localhost/zfstepbystep/public/index.php
效果如下:
最后请注意,如果出现“'No default module defined for this application”提示信息,则请检查数据库连接参数。