[代码审计] -- ThinkPHP 5.1框架入门(二)

接着上回书。


0x01 数据库与模型

ThinkPHP采用内置抽象层将不同的数据库操作进行封装处理。
即:数据抽象层基于PDO模式,无需针对不同的数据库编写相应的代码。

1. 不加Model:

两者的区别:(前缀)

$data=Db::table('bage_admin')->select();
$data=Db::name('admin')->select();

在这里插入图片描述
在这里插入图片描述

2. 使用Model:

Model即模型。
处理和配置数据库的相关信息。
建立Model:
在这里插入图片描述
在这里插入图片描述
打开配置文件并修改,然后跟踪SQL语句:
在这里插入图片描述


0x02 查询数据

1. 基本查询

Db::table()//必须指定完整数据表
Db::table()->where('id',1)->find()
//...还可以捕获异常
Db::name()//不需要指定前缀

2. 更多方式

1. \db()->select()
2. Db::name()->value()
3. Db::name()->column()
4. ...

0x03 链式查询

“->”:就是链式查询
在这里插入图片描述
返回了一个数据库连接对象;
在这里插入图片描述
接着链接:
在这里插入图片描述
在这里插入图片描述

使用find(),select()等来结束链式查询。

注意

当同一个对象实例第二次进行查询后,会保留第一次查询到的值。
因此要使用removeOption()方法。


0x04 增删改

增:

  1. Db->name()->insert($data);方法,成功后会返回1.
    或者Db->name()->data($data)->insert();
  2. Db::name()->insertGetId($data);方法,返回id
  3. insertALL()批量插入数据。

改:

  1. Db::name()->where()->updata($data)
  2. …此处具体用法函数参见手册即可。

使用exp()方法可以直接在字段中执行mysql函数;
也可以使用raw()方法,直接进行修改更新。

删:

  1. Db::name()->delete($data);//删除主键对应的元素
  2. Db::name()->delete([1,2,3,...]);
  3. Db::name()->where()->delete();
  4. Db::name()->delete('true');//全部删除

0x05 查询

1. 比较查询

在where中:

  1. where('id','=',80);
  2. where('id','<>',80);等等…

2. 区间查询

  1. 使用like表达式进行模糊查询:
    Db::name()->where('email','like','xiao%')->select();

  2. like表达式还可以支持数组传递进行模糊查询:
    Db::name()->where('emali','like',['xiao%','wu%'],'or')->select();
    在SQL语句中表达式为:
    SELECT * FROM 'tp_user' WHERE ("email" LIKE "xiao%" OR "email" LIKE "wu%");

3. 时间查询

给以上方法汇总:
在这里插入图片描述

4. 聚合、原生、子查询

聚合:

  1. count()
  2. max()
  3. min()

  4. 在这里插入图片描述
    在这里插入图片描述

子查询:
在这里插入图片描述
都是只返回SQL语句:(只是语句有无括号的区别)
在这里插入图片描述

原生查询:
就是直接使用SQL语句,利用query方法:
Db::query('select * from admin');
或者:
Db::execute('select * from admin');


0x06 链式方法

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


在这里插入图片描述
page方法是对limit方法的批量操作。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
未完待续…

发布了29 篇原创文章 · 获赞 1 · 访问量 928

猜你喜欢

转载自blog.csdn.net/qq_40505187/article/details/105385971