准备工作:接着前面两篇article的示例,在Controller里新建一个myquery的action,Model里新建一个myquery的function,View里接收Controller调用Model返回的结果并打印出来。
select语句
直接在query()方法里传入sql语句并执行
$result = DB::query(’select * from articles;’)->execute();
这时候如果return $result;给Controller,会发现页面上抛出了一个异常Database results are read-only。这是为什么呢?在model里将需要返回的$result打印出来可以发现,结果是一个对象,而在controller里需要赋值给一个数组,这时候就需要执行as_array()。
$result = DB::query(’select * from articles;’)->execute()->as_array();
此时返回$result后在view里打印出来就没有问题了。
从articles表里select所有信息
$result = DB::select()->from(’articles’)->execute();
select指定column
$result = DB::select(’title’, ’body’)->from(’articles’)->execute();
select指定column并取别名
$result = DB::select(array(’title’, ’title_2’), ’body’)->from(’articles’)->execute();
指定where等于条件
|
|
where不等于条件
$result = DB::select()->from(’articles’)->where(’id’, ’!=’, 1)->execute();
where in某一范围
$result = DB::select()->from(’articles’)->where(’id’, ’in’, array(1, 2))->execute();
between某一范围
$result = DB::select()->from(’articles’)->where(’id’, ’between’, array(1, 2))->execute();
模糊匹配
$result = DB::select()->from(’articles’)->where(’title’, ’like’, ’%iat%’)->execute();
按某一字段排序
$result = DB::select()->from(’articles’)->order_by(’id’,’asc’)->execute();
多个字段排序
$result = DB::select()->from(’articles’)->order_by(’id’,’asc’)->order_by(’title’, ’desc’)->execute();
限定取出的条数
|
|
update语句
跟基本的SQL语句一样,update返回的是受影响的条数,根据返回值得结果判断是否更新成功。
修改某一字段的值
|
|
修改多个字段的值
$result = DB::update(’articles’)->set(array(’title’ => ’iatboy’, ’body’ => ’iatboy body’))->where(’id’, ’=’, ’1’)->execute();
insert语句
insert语句返回的是数组,包含插入的id以及受影响的条数 set的方式插入
$result = DB::insert(’articles’)->set(array(’title’ => ’iat001’, ’body’ => ’body001’))->execute();
指定column值得方式插入
$result = DB::insert(’articles’)->columns(array(’title’, ’body’))->values(array(’iat002’, ’body002’))->execute();
delete语句 delete语句返回的是受影响的条数
$result = DB::delete(’articles’)->where(’id’, ’=’, ’1’)->execute();
join语句
对应的有left join和right join
$result = DB::select()->from(’articles’)->join(’comments’,’right outer’)->on(’articles.id’, ’=’, ’comments.id’)->execute();
绑定参数语句
绑定参数及预处理可以在一定程度上减少SQL注入的风险,实际上也是通过转义进行过滤的。
|
|
如下的方式绑定变量是不正确的。
$result = DB::query("SELECT * FROM articles WHERE title = :title")->bind(’title’, ’iat001’)->execute();
直接赋值的话需要用到param
$result = DB::query("SELECT * FROM articles WHERE title = :title")->param(’title’, ’iat001’)->execute();
绑定多个参数
$result = DB::query("SELECT * FROM articles WHERE title = :title AND body = :body")->parameters(array(’title’ => $title, ’body’ => ’body001’))->execute();
数据缓存
使用数据缓存有利于减轻数据库服务器压力,加快响应时间,当然对于经常变动的值不建议使用数据缓存。cache()函数可传递三个参数,缓存时间、保存文件、是否缓存空值
|
|
采用delete方法可以删除某一具体缓存,delete_all方法可以删除某一目录下的所有缓存。
|
|
事务
事务的ACID特性在数据库的安全性方面起到了很大的作用,FuelPHP中事务的使用如下:
|
|
至此,FuelPHP基本的增删改查结束。