ThinkPhpsql语句执⾏⽅法
ThinkPHP内置的ORM和ActiveRecord模式实现了⽅便的数据存取操作,⽽且新版增加的连贯操作功能更是让这个数据操作更加清晰,但是ThinkPHP仍然保留了原⽣的SQL查询和执⾏操作⽀持,为了满⾜复杂查询的需要和⼀些特殊的数据操作,SQL查询的返回值因为是直接返回的Db类的查询结果,没有做任何的处理。
主要包括下⾯两个⽅法:
1、query⽅法
query⽅法⽤于执⾏SQL查询操作,如果数据⾮法或者查询错误则返回false,否则返回查询结果数据集(同select⽅法)。
使⽤⽰例:
1. $Model = new \Think\Model() // 实例化⼀个model对象没有对应任何数据表
$Model->query("select * from think_user where status=1");
如果你当前采⽤了分布式数据库,并且设置了读写分离的话,query⽅法始终是在读服务器执⾏,因此query⽅法对应的都是读操作,⽽不管你的SQL语句是什么。
可以在query⽅法中使⽤表名的简化写法,便于动态更改表前缀,例如:
1. $Model = new \Think\Model() // 实例化⼀个model对象没有对应任何数据表
$Model->query("select * from __PREFIX__user where status=1");
// 3.2.2版本以上还可以直接使⽤
$Model->query("select * from __USER__ where status=1");
和上⾯的写法等效,会⾃动读取当前设置的表前缀。
2、execute⽅法
execute⽤于更新和写⼊数据的sql操作,如果数据⾮法或者查询错误则返回false ,否则返回影响的记录数。
使⽤⽰例:
1. $Model = new \Think\Model() // 实例化⼀个model对象没有对应任何数据表
$Model->execute("update think_user set name='thinkPHP' where status=1");
如果你当前采⽤了分布式数据库,并且设置了读写分离的话,execute⽅法始终是在写服务器执⾏,因此execute⽅法对应的都是写操作,⽽不管你的SQL语句是什么。
thinkphp3也可以在execute⽅法中使⽤表名的简化写法,便于动态更改表前缀,例如:
1. $Model = new \Think\Model() // 实例化⼀个model对象没有对应任何数据表
$Model->execute("update __PREFIX__user set name='thinkPHP' where status=1");
// 3.2.2版本以上还可以直接使⽤
$Model->execute("update __USER__ set name='thinkPHP' where status=1");
和上⾯的写法等效,会⾃动读取当前设置的表前缀。
摘⾃:ThinkPHP3.2完全开发⼿册
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论