使用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的快速入门教程已全部整理完毕!
转载请注明:阿尤博客 » Yii框架快速入门[数据库的使用]