Zendframework 连接mysql数据库方法

来源:互联网 发布:动画宣传片制作软件 编辑:程序博客网 时间:2024/05/26 09:54

zend framework提供了一个叫做db adapter 适配器来给用户连接数据库,不仅可以用来应付mysqls数据库,还可以用来应付其他的数据库。这里以mysql为例,说明如何用Zendframework来连接Mysql数据库。

方法1:(韩顺平视频中提到的方式,用的就是怎的framework提供的范例)首先在Application.ini中添加
[mysql]
db.adapter = PDO_MYSQL
db.params.host = localhost
db.params.username = root
db.params.password = root
db.params.dbname = testzf
这里需要注意一下ini文件中的[  ],这个表示是什么段,这个段还可以继承,具体是[development:production]。然后就是把这段代码放到哪个段的问题了,大家可以到public/index.php下,可以看到define('APPLICATION_ENV', (getenv('APPLICATION_ENV') ? getenv('APPLICATION_ENV') : 'development'));这样的代码,‘development’可以被替换为production、testing、staging等,我这里配置的是development,所以对应的我就把代码放到development段了。
[development : production]
phpSettings.display_startup_errors = 1
phpSettings.display_errors = 1
resources.frontController.params.displayExceptions = 1
[mysql]
db.adapter = PDO_MYSQL
db.params.host = localhost
db.params.username = root
db.params.password = root
db.params.dbname = testzf
此时我们就已经给我们的db adapter配置了一些内容,但是今次还是不够的。
还需要初始化一下,我这里在Bootstrap.php函数中初始化的,大家可以跑到IndexAction.php中的InitAcrion来做这段初始化代码
$url = constant("APPLICATION_PATH"). DIRECTORY_SEPARATOR.'configs/'.'application.ini';//读取applicaion.ini中的文件
$dbconfig =new Zend_Config_Ini($url,"mysql");//用读取的内用的mysql段来创建一个Zend_Config_Ini的对象
$db = Zend_Db::factory ($dbconfig->db);//这里用刚才的参数来初始化一个db adapter
 $db->query('SET NAMES UTF8');//这里让编码方式变成utf-8
 Zend_Db_Table::setDefaultAdapter($db); //用我们的db adapter作为默认db adapter
到这里我们的db adapter前期工作已经做好了,下面就是如何使用了。
比如这里我在models下建了message.php文件:
<?php
class Application_Model_Message extends Zend_Db_Table //必须继承自Zend_Db_Table
{
protected $_name='message';//表名
protected $_primary='message_id';//表主键,主要用来方便我们查询
}
此时我们可以来测试一下数据库用有没有连接成功
在indexController中的indexAction方法里添加代码:
$messagemodel=new Application_Model_Message();
$mes=$messagemodel->fetchAll();
$ss=$mes->toArray();
echo "<pre>";
print_r($ss);
echo "</pre>";
可以看到这样的页面,如果大家看到乱码不要慌,右击->编码->utf-8就可以看到正确的结果了。


图片

方法2:这里不再赘述,本质上跟方法一很类似,如果方法1没有看懂可以看看方法2,会很容易理解

在indexController.php中添加如下代码:

  $params=array("host"=>"localhost",
     "username"=>"root",
     "password"=>"root",
     "dbname"=>"testzf");    

$db=Zend_Db::factory('Pdo_Mysql',$params); 

Zend_Db_Table::setDefaultAdapter($db);

Zend_Registry::set('db',$db);
$adapter=Zend_Registry::get('db');
$result=$adapter->query('select * from message');

$rowset=$result->fetchAll();
 echo "<pre>";
print_r($rowset);
  echo "</pre>";