<?php
namespace app\index\controller;
use think\Db;
/*
* 连接数据库
* 1、全局配置:config/database.php
* 2、动态配置:think\db\query.php中有一个方法 connect()
* 3、DSN链接:数据库类型://用户名:密码@数据库地址:端口号/数据库名称#字符集
* */
class Demo4
{
//全局配置
public function conn1(){
return Db::table('tp_user')->where('id',1)->value('username');
}
//动态配置
Public function conn2(){
return Db::connect([
//一次仅生效
'type' => 'mysql',
// 服务器地址
'hostname' => '127.0.0.1',
// 数据库名
'database' => 'tp5',
// 用户名
'username' => 'root',
// 密码
'password' => '123456',
])
->table('tp_user')->where('id',2)->value('username');
}
//dsn
Public function conn3(){
$dsn = 'mysql://root:123456@127.0.0.1:3306/tp5#utf8';
return Db::connect($dsn)->table('tp_user')->where('id',3)->value('username');
}
}
增删改查
<?php
namespace app\index\controller;
/*
* 查询构造器
* 准备工作:app-Debug=>'true';app_trace=>'true'
* 系统学习数据库增删改查 curd
*
* */
use think\Db;
class Demo5
{
//1、单条查询
public function find(){
/*
* Db 类数据库操作的入口类
* 功能:静态调用think\db\Query.php类中的查询方法实现基本操作
* *table():选择数据表,完整的表名
* field():用来设置返回的字段或别名
* where();设置查询条件 表达式,数组
* 1、单个条件 使用表达式
* 2、多个条件 使用数组
* find()返回符合条件的第一条记录,没有的话返回null
* */
$res = Db::table('tp_user')
->where('id','=',2)
->find(); // SELECT * FROM `tp_user` WHERE `id` = 2 LIMIT 1
dump(is_null($res)?'no find':$res);
$res1 = Db::table('tp_user')
->field('id,username')
->where('id','=',2)
->find(); //SELECT `id`,`username` FROM `tp_user` WHERE `id` = 2 LIMIT 1
dump(is_null($res1)?'no find':$res1);
$res2 = Db::table('tp_user')
->field(['id'=>'uid','username'=>'name'])
->where('id','=',2)
->find(); //SELECT `id` AS `uid`,`username` AS `name` FROM `tp_user` WHERE `id` = 2 LIMIT 1
dump(is_null($res2)?'no find':$res2);
$res3 = Db::table('tp_user')
->field(['id'=>'uid','username'=>'name'])
->where('id',2)//如果相等关系,=可以省略
->find(); //SELECT `id` AS `uid`,`username` AS `name` FROM `tp_user` WHERE `id` = 2 LIMIT 1
dump(is_null($res3)?'no find':$res3);
$res4 = Db::table('tp_user')
->field(['id'=>'uid','username'=>'name'])
//->where('id',2)//如果相等关系,=可以省略
->find(2); //如果是主键查询可省略where语句
dump(is_null($res4)?'no find':$res4);
}
//2、多条查询
public function select(){
//select()返回的是一个二维数组,没有数据返回一个孔数组
$res = Db::table('tp_user')
->field('id,username')
->where([
['sex','=','man'],
['age','>=',5]
])->select();
if(empty($res)){
return 'no';
}else{
foreach ($res as $row){
dump($row);
}
}
}
//3、单条插入
public function insert(){
//insert()成功返回新增数量,失败返回false
$data = [
'username'=>'lll2',
'age'=>18,
'sex'=>'woman',
'delete_time'=>0,
'password'=>'123'
];
//return Db::table('tp_user')->insert($data);// INSERT INTO `tp_user` (`username` , `age` , `sex` , `delete_time` , `password`) VALUES ('lll' , 18 , 'woman' , 0 , '123')
//return Db::table('tp_user')->data($data)->insert();
//插入的同时返回新增主键Id
//insertGetId()同时执行两步,第一步插入,第二部返回主键id
return Db::table('tp_user')->insertGetId($data);
}
//4、多条插入
public function insertAll(){
$data = [
['username'=>'lll2',
'age'=>18,
'sex'=>'woman',
'delete_time'=>0,
'password'=>'123'],
['username'=>'lll4',
'age'=>13,
'sex'=>'woman',
'delete_time'=>0,
'password'=>'123'],
['username'=>'lll2e',
'age'=>13,
'sex'=>'woman',
'delete_time'=>0,
'password'=>'123'],
];
return Db::table('tp_user')->data($data)->insertAll();
}
//5、更新操作
public function update(){
//update必须要有更新条件,update 不支持Data()
//如果更新条件是主键的话,可以直接把主键写到更新数组中
// return Db::table('tp_user')
// ->where('id',4)
// ->update(['username'=>'hahah4']);//UPDATE `tp_user` SET `username` = 'hahah4' WHERE `id` = 4
//如果更新条件是主键的话,可以直接把主键写到更新数组中
return Db::table('tp_user')
->update(['username'=>'hahah4','id'=>5]);
}
//6、删除操作
public function delete(){
return Db::table('tp_user')
->where('id',11)
->delete();
}
//原生查询
public function query(){
$sql = "select username,age from tp_user where id in(2,3)";
dump(Db::query($sql));
}
//原生写操作:更新 删除 添加
public function execute(){
// Db::execute("update tp_user set username='dddd' where id=1");
//return Db::execute("insert into tp_user set username='ddddd',password='123'");
return Db::execute("delete from tp_user where username='ddddd'");
}
}