原生SQL查询有 query() 和 execute() 两个方法:
十年来,创新互联不忘初心,以网站建设互联网行业服务标杆为目标,不断提升技术设计服务水平,帮助客户在互联网推广自己的产品、服务和品牌,为客户创造价值从而实现自身价值!
query():用于 SQL 查询操作,并返回符合查询条件的数据集
execute():更新和写入数据的 SQL 操作,返回影响的记录数
query()
query() 方法是用于 SQL 查询操作,和select()方法一样返回符合查询条件的数据集。
例子:
public function read(){
// 实例化一个空模型,没有对应任何数据表
$Dao = M();
//或者使用 $Dao = new Model();
$list = $Dao-query("select * from user where uid5");
if($list){
$this-assign('list', $list );
$this-display();
} else {
$this-error($Dao-getError());
}
}
对于 query() 方法返回的数据集,跟 select() 一样,可以在模板里直接循环输出。
execute()
execute() 方法用于更新和写入数据的 SQL 操作(注:非查询操作,无返回数据集),返回影响的记录数。
例子:
public function read(){
header("Content-Type:text/html; charset=utf-8");
// 实例化一个空模型,没有对应任何数据表
$Dao = M();
//或者使用 $Dao = new Model();
$num = $Dao-execute("update user set email = '12345@xxx.com' where uid=3");
if($num){
echo '更新 ',$num,' 条记录。';
}else{
echo '无记录更新';
}
}
如果查询比较复杂或一些特殊的数据操作不能通过 ThinkPHP 内置的 ORM 和 ActiveRecord 模式实现时,就可以通过直接使用原生 SQL 查询来实现。
注意:以上都是 user 没有表前缀的例子,在查询语句中,查询的表应该写实际的表名字(包括前缀)。
要看你没有人选是用什么表示,如果列名为“是否有人选”0表示没有人选的话,selcet 课程编号,课程名称 from 表名 where 是否有人选=0
select c.cno,cname from course c left join sc on(c.cno=sc.cno) where sc.sno=null; 嘻嘻,应该是这样的
查询:select 字段名 from 表名 where 条件 order by ……
添加:insert into 表名(字段1,字段2……) values(值1,值2,……)
删除:DELETE FROM 表名称 WHERE 列名称 = 值
修改:UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值
这么写当然不行,因为in里面是个字符串你放数组格式就不对
用implode(",", $array)把数组转为字符串就行,不用循环。