当我们在开发项目时..大家都会遇到一个问题就是:数据库的编码问题.当然我们不用Zend Framework做为项目开发的框架时..我们可以很快,很容易搞定这个小问题..但是当我们要使用Zend Framewok开发项目时..我们可能一时会不知道如何解决这个小问题..比如我就是这样的人..在开发这个博客前..真的不知道如何设数据库编码..? 现在我总结一下我的经验吧..当然也是在网络上找来的答案…
设定数据库编码问题很好解决.代码如下:
<?php $dbAdapter=Zend_Db::factory($config->general->db->adapter,
$config->general->db->toArray());
$dbAdapter->query("SET NAMES utf8"); ?>
当我们搞定这个问题后..我们可能要给数据库设定数据表的前缀..这个时候..可能有的朋友会有不同的方式..之前我用一个笨方法也搞定了..但是现在参考网络上一篇文章,就有点启发,就把我原来的方法给去了,改进了一下.步骤如下所示:
第一:我的项目目录安排如下图所示:(请注意我画红线的地方!)
第二:敲定confg.ini数据库配置文件我的配置文件如下:
[general]
db.adapter=PDO_MYSQL
db.host=localhost
db.username=root
db.password=
db.dbname=unblog
db.charset=utf8
db.prefix=unblog_
第三:打开网站的入口文件index.php,把里面读取config.ini配置文件的方法改成如下代码:
//config database connect
$config=new Zend_Config_Ini('./app/config/config.ini',null, true);
Zend_Registry::set('config',$config);
$dbAdapter=Zend_Db::factory($config->general->db->adapter,
$config->general->db->toArray());
$dbAdapter->query("SET NAMES {$config->general->db->charset}");
Zend_Db_Table::setDefaultAdapter($dbAdapter);
Zend_Registry::set('dbAdapter',$dbAdapter);
Zend_Registry::set('dbprefix',$config->general->db->prefix);
?>
第四:在library/Custom/Model/增加一个Db.php 此文件代码如下.. 它是继承Zend_Db_Table这个类的.它的代码如下:
class Custom_Model_DbextendsZend_Db_Table
{
public function __construct()
{
$dbprefix=Zend_Registry::get('dbprefix');
$this->_name=$dbprefix.$this->_name;
parent::__construct();
}
}
最后:就是在我们的网站的每个Models里,数据库的操作类继承Custom_Model_Db,而不是继续原来的
Zend_Db_Table就可以搞定这一切
参与代码如下:
class Article extends Custom_Model_Db
{
protected $_name ="article";
protected $_primary ='id';
}
?>
希望大家一起交流...好累...睡觉了...晚安...