Yii框架操作数据库的几种方式 [ 新手入门 ]
一、Yii操作数据库的几种选择 1 PDO方式(适合多表连接查询)。
$sql = "";//原生态sql语句
xx::model()->dbConnection->createCommand($sql)->execute(); 非select语句(update、insert、delete)
xx::model()->dbConnection->createCommand($sql)->queryRow(); 查询select一条记录
xx::model()->dbConnection->createCommand($sql)->queryAll(); 查询select多条记录
$sql = "select a.*, count(b.role_id)as num from {{user_role}} a left join {{user}} b on a.id = b.role_id group by b.role_id order by a.id";
$user_role_info = UserRole::model()->dbConnection->createCommand($sql)->queryAll();
$this->render("list", array('user_role_info'=>$user_role_info));
比如
$sql = "select a.*, count(b.role_id)as num from slgo_user_role a left join slgo_user b on a.id = b.role_id group by b.role_id order by a.id";
$user_role_info = UserRole::model()->dbConnection->createCommand($sql)->queryAll();
$this->render("list", array('user_role_info'=>$user_role_info));
2 Active Record方式 (1)New
$post=new Post;
$post->title='sample post';
$post->content='post body content';
$post->save();
(2)Criteria方式 也可以使用 $condition 指定更复杂的查询条件。 不使用字符串, 我们可以让 $condition 成为一个 CDbCriteria 的实例, 它允许我们指定不限于 WHERE 的条件。
$criteria=new CDbCriteria;
$criteria->select='title'; // 只选择 'title' 列
$criteria->condition='postID=:postID';
$criteria->params=array(':postID'=>10);
$post=Post::model()->find($criteria);
一种替代 CDbCriteria 的方法是给 find 方法传递一个数组。 数组的键和值各自对应标准(criterion)的属性名和值, 上面的例子可以重 写为如下:
$post=Post::model()->find(array(
'select'=>'title',
'condition'=>'postID=:postID',
'params'=>array(':postID'=>10),
));
当一个查询条件是关于按指定的值匹配几个列时, 我们可以使用 findByAttributes()。我们使 $attributes 参数是一个以列名做索引的值的数组。 在一些框架中, 此任务可以通过调用类似findByNameAndTitle的方法实现。 虽然此方法看起来很诱人, 但它常常引起混淆, 冲突 和比如列名大小写敏感的问题。
3 Query Builder 方式
$user = Yii::app()->db->createCommand()
->select('id, username, profile')
->from('tbl_user u')
->join('tbl_profile p', 'u.id=p.user_id')
->where('id=:id', array(':id'=>$id))
->queryRow();
二、Yii操作数据库的几种选择与mysql_escape_string方法 mysql_escape_string是转义sql中的特殊字符。 1 创建记录时 当直接执行sql时, 需要加mysql_escape_string方法。 当使用yii框架式, 不需要加(因为Yii已经添加验证)。
2 查询记录时 当直接执行sql时, 需要加mysql_escape_string方法。 当使用yii框架式, 如果在find中直接拼接sql, 则也需要添加, 如果使用param数组方式, 不需要加(因为Yii已经添加验证)。
连接数据库的两种方法:
Yii::app()->createCommand($sql)->queryAll();
xxx::model()->dbConnection->createCommand($sql)->queryAll();
共 0 条回复
没有找到数据。
38500
注册时间:2016-10-31
最后登录:1970-01-01
在线时长:0小时0分
最后登录:1970-01-01
在线时长:0小时0分
- 粉丝1
- 金钱5
- 威望0
- 积分5