使用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` WHERE id>3 AND name = '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的快速入门教程已全部整理完毕,如在学习过程中有不理解的地方,欢迎到留言板留言。
fjdh dyf click here