Yii2数据库查询有关的操作
2016-07-14 17:08
585 查看
注:下文所说的Article为model
本文中的dd()函数,为我自己自定义的函数
function dd($var){
echo "<pre>";
var_dump($var);
echo "</pre>";
die;
}
1:防止sql注入,用站位符的方式
2:数据库查询操作
3:大数据查询省内存处理
![](https://img-blog.csdn.net/20160714170607795?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
打印$data的结果为:
use app\models\Article;
本文中的dd()函数,为我自己自定义的函数
function dd($var){
echo "<pre>";
var_dump($var);
echo "</pre>";
die;
}
1:防止sql注入,用站位符的方式
$request=Yii::$app->request; $id=$request->get('id'); $sql="select * from article where id=:id"; $r=Article::findBysql($sql,[':id'=>$id])->all();
2:数据库查询操作
获取全部数据 $data=Article::find()->all(); 查询单条数据id=5 $data=Article::find()->where(['id'=>'5'])->all(); id>3的数据 $data=Article::find()->where(['>','id',3])->all(); id>2,id<5 id:2-5之间的 $data=Article::find()->where(['between','id',2,5])->all(); title like 111 $data=Article::find()->where(['like','title',"111"])->all(); 查询单条数据id=5 one()方法返回的是个对象,all()方法返回的是个大数组里面为对象 $data=Article::find()->where(['id'=>'5'])->one(); 查询一条数据 id=5的,因为id为主键 $data=Article::findOne(5); 查询多条数据 id=3,4,5的,因为id为主键 $data=Article::findAll([3,4,5]); dd($data);
3:大数据查询省内存处理
从数据库取出来的是一个个的对象,为了节省内存常常需要用asArray()方法转换成为数组。
$data=Article::find()->asArray()->all();
打印结果例如:
如果取的数据特别多,比如一下取出1000条数据,如果都以对象的方式,会特别耗费内存,yii给提供的方式,就是 通过batch()方法,指定每次查询几条,分多次查询,比如1000条数据,先查询前100条,然后存入一个数组中,再查 询100条,再存入该数组,分10次取出,就相当于只占了100条的内存。每100个一组。
两条两条的取,输出结果为2-2-1-
foreach(Article::find()->batch(2) as $article){ echo count($article),'-'; }
foreach(Article::find()->batch(2) as $article){ $data[] = $article; }
打印$data的结果为:
相关文章推荐
- 一个关于if else容易迷惑的问题
- Android之获取手机上的图片和视频缩略图thumbnails
- PHP5.2.*防止Hash冲突拒绝服务攻击的Patch
- 深入理解PHP之匿名函数
- JSP/PHP基于Ajax的分页功能实现
- 数据库链接字符串查询网站
- 关于PHP通过PDO用中文条件查询MySQL的问题。
- 什么是设计模式
- PHP数据库长连接mysql_pconnect的细节
- DB2实例管理
- DB2实例管理
- Php Installing An Expansion
- 保障MySQL数据安全的14个最佳方法
- mysql问答汇集
- rem : web app适配的秘密武器
- jquery高级应用之Deferred对象
- 关于浮动与清除浮动,你应该知道的