PHP是网站后台开发语言,其重要的操作对象莫过于数据库,之前有了解过MysqLi和pdo,但ThinkPHP的数据库交互必须使用其特定的封装方法,或者可以认为其是对PHP数据库操作的进一步封装,以达到更加安全和高效。
ThinkPHP内置了抽象数据库访问层,把不同的数据库操作封装起来,我们只需要使用公共的Db类进行操作,而无需针对不同的数据库写不同的代码和底层实现,Db类会自动调用相应的数据库驱动来处理。采用PDO方式,目前包含了MysqL、sqlServer、Pgsql、sqlite等数据库的支持。
数据库连接配置在APP目录下的database.PHP中进行相关参数的配置
测试准备工作
建立数据表tb_test,并在database.PHP中配置('prefix' => 'tb_',)使表前缀为tb_,然后建立模板Test.PHP,控制器Testx.PHP
控制器Testx.PHP实现
301_28@ PHP
= Test();
=->testshow();调用模板中的方法
dump();输出
18 }
sql语句数据库操作
使用execute()和query()方法实现数据库操作,是直接使用sql原生语句进行数据表操作
execute可实现数据表的增、删、改,操作后会返回影响行数
query可实现数据表的增、删、改、查,只有查询会返回结果
模板Test.PHP实现:
301_28@ PHP
Test
方法1
方法2
查询
查询结果数组
=Test::query("insert into tb_test values(?,[19,"W12","X12","N12"
}
添加语句
模板Test.PHP实现:
301_28@ PHP
Test
'东小东','text2' => '100'];
= ['text1' => '东小东1','text2' => '100'], ['text1' => '东小东2', ['text1' => '东小东3',
=Test::insertAll(
}
基于PDO的删除语句
模板Test.PHP实现:
301_28@ PHP
Test
delete();
30
=Test::where('id','>',30)->17
}
基于PDO的修改语句
模板Test.PHP实现:
301_28@ PHP
Test
修改的值和原来相同,则返回0
update(['text3' => '99999']);
setInc('id',2);
=Test::where('text1',"dongxiaodong")->setDec('id',2
}
查询语句
模板Test.PHP实现:
301_28@ PHP
Test
查询数据库表的全部信息
查询
select();
查询符合条件的第一条数据,结果不存在返回null
find();
查询某个字段的值,只能查询到第一个,失败返回空
value('text2');
查询某个字段的值,查询所有,失败返回空数组
column('text3');
查询 like,不区分大小写,返回数组
=Test::where("text1","like","%W%")->
查询,返回数组
select();
统计行数
(
方法打印
功能
}
301_28@ PHP
Test
where("text1","%W%")
select();
select();
whereOr("text1","%W%")
select();
=Test::where("text1|text3","%W%" ->
}
301_28@ 获取到表的字段,类型,主键等信息,返回数组
=Test::
=Test::where("id",12 ->order("id") 添加实参desc为降序,默认asc
->limit(0,10)获取第[0,10]条数据
page("3,10") //分页,参数1为当前页,参数2为每页的条数
->field("id,text3") 提取的字段
->whereOr("text1","%W%")
->select();
数据库
以上是使用模板继承Model来实现数据库操作的,当然还有另一种数据库的操作方法,那就是使用系统的Db模块。如果使用该模块则必须先use think\Db;
301_28@ PHP
'东小东','text2' => '222222'];
insert($daa);
查询1
加上表的前缀
select();
查询2
=Db::query("select * from tb_test"
}
参考:
原文链接:https://www.f2er.com/thinkphp/74262.html