小笙's Blog

Yii框架快速入门[数据库的使用]2013.07.05 04:04

使用WEB编程,另一个我们经常打交道的就是数据库。用户的数据通过表单提交给服务器,服务器根据用户请求,对数据库中数据进行CURD(增删改查)操作。

Yii数据库访问API

  Yii DAO: Yii Data Access Object, 基于PHP的PDO扩展,通过提供的统一接口访问不同类型数据库。能实现数据库的所有类型的操作,效率也比较高。

  AR: Active Record, AR是对所有数据库字段进行封装,一切的数据库操作都可以转化为对类对象进行的。一个AR类代表一个数据模型(一个表单或者数据表),字段作为AR的属性,一个AR实例代表表中一行。但是只能实现基本的CRUD操作,并且由于高度的封装,性能上不如使用DAO。

使用Yii操作的数据库操作

第一步:创建数据库和数据表

我们根据上一篇文章用到的表单建立相关的数据库信息,非常之简单,就不做演示。

示例数据库:yii,示例数据表:tbl_feedback。我们可以看到数据表的结构(Mysql)。

第二步:修改Yii的配置文件

编辑Yii的主配置文件protected/config/main.php,修改db配置

1
2
3
4
5
6
7
8
'db'=>array(
   'connectionString' => 'mysql:host=localhost;dbname=cms',
   'emulatePrepare' => true,
   'tablePrefix'   => 'tbl_',
   'username' => 'root',
   'password' => '123',
   'charset' => 'utf8',
)

其中,配置形式类似PDO,'tablePrefix'是指表的前缀,可以简化SQL代码编写,调用是通过{{feedback}},在SQL语句中会自动把它替换为”tbl_feedback”。

第三步:插入数据库

修改helloworld控制器的actionFeedBack。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
public function  actionFeedback()
{
   $model=new  FeedbackForm;
  if (isset($_POST['FeedbackForm']))
  {
       $model->attributes= $_POST['FeedbackForm'];
  //Command对象
  $cmd=Yii::app()->db->createCommand();
       if($model->validate())
  {
  //插入数据库
  if($cmd->insert('{{feedback}}', array(
      'fb_name'=>$model->name,
      'fb_email'=>$model->email,
      'fb_subject'=>$model->subject,
      'fb_body'=>$model->body
  )))  echo '插入成功';
  }            
       else print_r($model->getErrors());
  }
}

其中,这种写法属于PHP的连贯操作,数据都是以预处理形式处理。

第四步:查询数据库

1
2
3
4
5
6
7
8
$result=$cmd->select('*')
   ->from('tbl_feedback')
   ->where('id>:id and fb_name=:name', array(
       ':id'=>3,
       ':name'=>'fes'
       ))
  ->queryRow();
var_dump($result);

其中queryRow()是执行查询操作,并返回结果的第一行。此语句等同于执行

1
SELECT* FROM`tbl_feedback` WHEREid>3 ANDname='fes'

关于数据库的其他查询如:query()、queryAll()等可以参考官方手册

第五步:更新数据库

调用CCommand的update方法即可。

第六步:删除数据库

delete()方法,不再赘述。

Yii DAO的其他数据库用法http://www.yiiframework.com/doc/guide/database.dao

Active Record :http://www.yiiframework.com/doc/guide/database.ar

至此,Yii的快速入门教程已全部整理完毕,如在学习过程中有不理解的地方,欢迎到留言板留言。


  • 正在加载用户留言,请稍后~
点击这里取消回复

  • 请选择邮箱类型
  • @qq.com
  • @163.com
  • @sina.com
  • @126.com
  • @vip.qq.com
  • @sina.com.cn

:love: :kiss: :twist: :top: :shake: :bye: :han: :sleep: :lula: :rou: :happy: