CI数据库操作_查询构造器类
=================数据库操作======================
1.数据库配置:
config/database.php 用户名 密码 数据库
2 加载数据库类:$this->load->database();
也可以自动加载:在$autoload['libraries']中添加值"database"
3 使用:$this->db->...
* 连接多个数据库:
1)在database.php中配置多个数据库连接信息:
$db["default"] = array();
$db["database2"] = array();...
2) 在连接数据库时传入索引("default"或"database2")
3) $obj = $this->load->database("default",true) ,注意第二个参数在操作多个库时必须写,返回为连接的标示
4)使用数据库操作时,使用$obj->....进行操作
* 如果数据库表中指定了数据库表前缀,那么可以通过$this->db->dbprefix("表名")得到完整的表名
如:$sql = "select * from ci_user" --> "select * from ".$this->db->dbprefix("user");
4.执行语句:$this->db->query("语句");
如果用占位符方式,则query("语句",参数);*多个参数的时候需要使用数组
--查询绑定
* $sql = "select * from user where uid =? and pwd=?";
$this->db->query($sql,array("lily",123));
* $sql = "select * from user where uid in ? and XXX=?";
$this->db->query($sql,array(array(1,3,4),1));
select:返回一个查询结果集
insert/delete/update:返回true/false
查询:方法:query()//返回对象
二维数组:$res->result()
二维数组:$res->result_array()
返回一行数据:$res->row()/$res->row(行索引)
返回一行数据:$res->row_array()
5.常用辅助函数:
* $this->db->insert_id();返回自增序列的id
* $this->db->affected_rows();返回受影响的行数
* $this->db->last_query();返回最后一次执行的sql语句
* $this->db->count_all(table);返回表中有多少条数据
* $this->db->insert_string("表名",data);将data插入到表中 -- 生成sql语句
* $this->db->update_string("表名",data,condition);根据condition修改表中的data数据 -- 生成sql语句
=============查询构造器==================
一、 查询:
1.$this->db->get(表名,限定行数,起始值)
查询数据表中的数据,返回查询结果集,等同于$this->db->query("sql");
2.$this->db->get_where(表名,where,limit,offset)
根据指定条件进行查询
3.$this->db->select(fiels);
指定要查询出哪些字段,多个字段之间用,分隔,第二个参数设置是否保护字段名,默认为true
4.连贯操作:
$this->db
->select("字段") //用","隔开
->from("表名")
->where("查询条件")
1)可以字符串,
2)也可以使用数组array("字段1"=>1,"字段2"=>'zx')-and相连的条件
3)where("字段名",$id)//字段名=$id.如果需要不等于:where("字段名<>",$id)
->or_where("查询条件")//使用同where,当传递数组时用or连接
->order_by("排序")
->group_by("分组")
->having("分组后的查询条件")
->limit(n,m)//n m和数据库中的limit是相反的:"limit m,n"
->join("要连接的表名","连接的条件(on....=...)","可选参数:连接方式-left right,默认内连接")
->get(); //执行
* get以上的方法都是不需要顺序,建议大家按sql的语句
* 复杂的语句建议使用query()的方法
----------------------------------
二、 添加:
页面显示----添加表单
$this->load->view("insert");
添加的操作
模型:$this->db->insert("user",$arr);//表名,添加的数据(数组:字段=>值)
返回值:影响行?true/false
控制器:
看表单传递的数据:$this->input->post()
调用模型层中的方法
批量插入:
$this->db->insert_batch(tableName,data) -- data可以为二维数组,表示多条数据
返回受影响的行数
----------------------------------
三、修改:
/*
从列表跳转到修改页面
页面显示:当前数据的内容(表单)
模型:查询当前这条数据(需要给定参数id)
控制器: 1)加载模型
2)获取参数:$this->uri->segment(数字)//参数从index.php之后开始数1,以此类推
例:http://localhost/ci/index.php/user/update/id/1
//希望取到id后的1 ,$this->uri->segment(4)
3)调用模型层中的方法->显示
不存在数据的时候:提示,跳转地址:site_url("控制器/方法")
*/
$this->db->update(tableName,data,where); -- data为一个数组,where可以是一个字符串
$this->db->replace(tableName,data); -- data中必须包含主键或唯一索引,而且数据表中的所有数据都必须出现在data中
----------------------------------
四、 删除:
$this->db->delete(tableName,where);//表名,where条件(可以数组,也可以字符串)
$this->db->empty_table(tableName);//删除表中的所有数据,id不会重置,等同于delete
$this->db->truncate(tableName);//清空表,并重置id
----------------------------------
五、set()
$this->db->set("key","value") 或 $this->db->set(["key"=>"value"])
例:$this->db->set("name","lily")->where()->update(tableName);
* insert/update/delete都可以使用
CI数据库操作_查询构造器类的更多相关文章
- ThinkPhp框架的数据库操作(查询)
TP框架有一套自己的数据库操作的代码,包括数据库的增.删.改.查.本文主要讲解TP框架的数据库查询操作. 找到入口文件的控制器: 我这里的入口文件是Show文件夹下的控制器. 打开Login控制器. ...
- Oracle基础:数据库操作_数据库事务_表的锁定
数据库操作语句: INSERT INTO 表名[(字段列表)] VALUES ( 表达式列表); 例子:INSERT INTO emp(empno,ename,job,hiredate) VALUES ...
- ci框架 查询构造器类
$this->db->get() 该方法执行 SELECT 语句并返回查询结果,可以得到一个表的所有数据: $query = $this->db->get('mytable') ...
- ThinkPHP 数据库操作(三) : 查询方法、查询语法、链式操作
查询方法 条件查询方法 where 方法 可以使用 where 方法进行 AND 条件查询: Db::table('think_user') ->where('name','like','%th ...
- 仿照hibernate封装的一个对数据库操作的jdbc工具类
package project02_Order_management.util; import java.io.IOException; import java.lang.reflect.Field; ...
- spring boot: spring-data-jpa (Repository/CrudRepository) 数据库操作, @Entity实体类持久化
SpringBoot实现的JPA封装了JPA的特性, Repository是封装了jpa的特性(我是这么理解的) 1在pom.xml引入mysql, spring-data-jpa依赖 2.在src/ ...
- ThinkPHP 数据库操作(六) : 查询事件、事务操作、监听SQL
查询事件 查询事件(V5.0.4+) 从 5.0.4+ 版本开始,增加了数据库的CURD操作事件支持,包括: 查询事件仅支持 find . select . insert . update 和 del ...
- mysql 单表下的字段操作_查询
查询的规律 查询语句限定条件越多,查询范围越小: 1.整个表 Select * From 库名.表名 2.整个表的某字段内 Select id From 库名.表名 3.整个表某字段的范围内 Sele ...
- CI 数据库操作总结
最简单示例 $query = $this->db->query("YOUR QUERY"); foreach ($query->result() as $row) ...
随机推荐
- Nginx负载均衡(架构之路)
[前言] 在大型网站中,负载均衡是有想当必要的.尤其是在同一时间访问量比较大的大型网站,例如网上商城,新闻等CMS系统,为了减轻单个服务器的处理压力,我们引进了负载均衡这一个概念,将一个服务器的压力分 ...
- ssh整合之七注解结合xml形式
1.我们之前的纯xml的方式,我们的配置文件很多,我们可以使用注解结合xml的方式进行开发,这样的话,我们的配置文件,会少很多,同时,我们可以直接在类中看到配置,这样,我们就可以快速地搭建一个ssh整 ...
- css3中的动画 @keyframes animation
动画的运用比较重要.接下来我希望针对我自己学习遇到的问题,再总结一下这个属性的使用方法. 创建一个动画: @keyframes 动画名 {样式} 引用自己创建的动画: animation:动画名 时 ...
- WPF项目学习.四
信息收录项目 版权声明:本文为博主初学经验,未经博主允许不得转载. 一.前言 记录在学习与制作WPF过程中遇到的解决方案. 需求文案.设计思路.简要数据库结构.简要流程图和明细代码,动图细化每步操作 ...
- Oracle12c:自动分区表
为什么要创建oracle分区表? 一般情况下,如果不分区,则每次查询的对象都是一整张表,如果采用了表分区,那么可以根据具体的分区字段当作条件来避免扫描整张表,减少IO的扫描以提高表的查询速度. 新建( ...
- html标记语言 --表单
html标记语言 --表单 七.表单 1.表单标记 1.1表单中的内容 <form></form>定义表单的开始位置和结束位置,表单提交时的内容就是<form>表单 ...
- js 常用数组和字符串方法
javascript数组与字符串常用方法总结 最近在梳理js的基础,首先从数组和字符串开始. string 常用方法: 1.substring(start开始位置的索引,end结束位置索引) 截取的位 ...
- win7安装JDK6
注:虽然9已经出来了,但是今天刚好业务需要要装JDK6,所以以JDK 6作为演示,同样适用于JDK 7.8的安装. 安装 基本上一直点下一步就可以. 此处可修改安装路径. 我将JDK的安装路径设置成了 ...
- ASP.NET MVC5 实现基于Quartz.NET任务调度
工作之余.技术?.记是不可能记住的. 只有写点东西 才能维持得了生活这样子的.好早就像写一篇关于任务调度的文章.终究是太懒了 一.Quartz.NET介绍 Quartz.NET是一个强大.开源.轻量的 ...
- 学习HTML的第二次课
1.图片 <img / > 图片的格式: 1.1BMP 占用空间大,颜色丰富. 1.2JPEG 有损压缩,占用空间较小. 1.3GIF 多帧动图,支持透明色. 1.4PNG 无损压缩,位图 ...