要使用CI中的数据库操作,首先我们应该在CI的 application/config/databass.php 文件中配置数据库信息,通常就是配置主机名,用户名,密码,数据库名,表前缀(dbprefix);

  CI提供了一个database的类,但是并不默认装载,需要手动加载;$this -> load ->database() ;也可以在application/config/autoload.php中的 $autoload['libraries'] = array( 'database' ) 配置数据库的自动加载,配置完之后就不需要每次使用db类都加载batabase;

  装载成功后会放入到超级对象的属性中;使用$this -> db 对象操作数据库;

  关于数据的查询;

    $sql = "select * from 表名";先创建一条SQL语句;

    $res = $this -> db -> query( $sql ); CI当中使用数据库默认返回的是一个对象,而不是资源;等价于mysql_fetch_object();

    $user = $res -> result();使用对象中的result方法取出资源;可以在任意页面使用$res -> result();命令返回资源,返回的资源是以数组的形式返回的,数组里面是一个一个的对象;

    也可以将返回的数组保存在一个变量中 $data[ ' user_list ' ] = $users  通过 $this -> load -> view( ' xxx/xxx.php ',$data ) 来将数据传输;

    $user = $res -> resut_array() ;如果不希望返回的是对象,这条命令是将资源以二维数组(里面是关联数组)的形式返回;

    $res -> row();以对象的形式返回第一条数据;(做用户登陆查询判定时可用);

  具体的参数可以在CI的官方手册中查阅;

  当有资源需要操作多个数据库时,可以在CI的 application/config/databass.php 文件中拷贝一份 { defualt } 参数配置数据库并修改这个参数,之后在$this -> load -> database( 参数名 ) 装载数据库时带上修改后的参数;

  

  关于数据的添加/删除/修改(例子写的是添加,删除和修改只需要更换sql语句即可);

    首先需要加载数据库类 $this -> load ->database;

    $sql = " insert into 表名 (字段,字段) value (‘ 值 ’,‘ 值 ’) " ;创建一条SQL语句;

    $this -> db -> query($sql);和mysql操作相似,不管什么查询都是用query建立;

    if($bool){      //通常我们插入参数之后会打印出一个受影响行数和自增ID;

      echo $this -> db -> affected rows();  //这条语句打印出受影响行数;等价于mysql_affected_rows();

      echo $this -> db -> insert_id();    //这条语句打印出自增ID;等价于mysql_insert_id();

    }

  关于提交数据来操作数据库安全性的问题;

    通常我们从表单得到一个字段并连接数据库查询时(大部分使用查询时使用,增删改会调用AR操作来解决安全性的问题),可以通过以下方式增加安全性;

    $data=array(

      $data = $this -> input -> post("xxx");

      $data = $this -> input -> post("xxx");

    );

    $sql = " select * from 表名 where 字段= ? , 字段 = ? ";

    $this -> db -> query( $sql , $data );

  关于表前缀的问题;

    在CI中处理表前缀的问题还是比较简单的,在application/config/databass.php 文件中有一个[ ' swap_pre ' ] 参数,只需要在里面写死一个表前缀,所有的SQL语句的表前缀都写死成[ ‘ swap_pre ’ ]这个参数,这个参数会自动的将自身替换成[ ' dbprefix ' ]的参数,当更换了数据库或表时,我们则不需要在sql语句中一条条修改表前缀,只需要在配置文件中修改[ ' dbprefix ' ]这个表前缀,如图所示;

    

  AR连贯操作;

    select id,name from tableName where id>=3 order by id desc limit 2,3;//这里limit是跳过两条查第三条数据;

    上面是一条SQL查询语句,用CI中的AR连贯操作是这样写的;

    $res = $this -> db -> select( ' id,name ' )

        ->from( ‘ user ’ )

        ->where(‘id >=’ , 3)      //这里id >=,id与符号之间一定要有空格;

        ->limit( 3 , 2 )        //跳过第二条查第三条,在CI中limit是反过来的,应该写成3,2而不是2,3;

        ->get();

    $res -> result();          //最后是用result函数调用;

    echo $this -> db -> last_query();    //查询最后一次sql语句,最后echo出来会发现和传统的sql语句是一样的;

    如果对安全性有需求,可以使用以下操作进行数据查询;如果安全需求更高的话就使用上面我们提到的使用db里面的query方法问号绑定查询;

    

    

    

CI中的数据库操作以及AR连贯操作的更多相关文章

  1. CI中的数据库操作

    转载于:http://blog.sina.com.cn/s/blog_76e7bdba01016p2p.html CI中第一次连接数据库,在控制器或模型的构造函数里输入以下语句 $this->l ...

  2. ***CI中的数据库操作(insert_id新增后返回记录ID)

    在system/application/config 文件夹和里面的config文件里已经配置了参数 $active_group = "default";$db['default' ...

  3. 十四、CI框架之数据库以参数形式插入操作

    一.代码如下: 二.使用浏览器打开 三.我们查看数据库,被成功插入数据 不忘初心,如果您认为这篇文章有价值,认同作者的付出,可以微信二维码打赏任意金额给作者(微信号:382477247)哦,谢谢.

  4. TP5.1:数据库的增删改查操作(基于面向对象操作)

    我们现实中对数据库的增删改查操作,都是使用模型类进行操作的(表名::),也就是面向对象操作,只有底层的代码用的是数据库操作(Db::table('表名')) 下面我将贴出模型类进行的增删改查操作,通过 ...

  5. 十二、CI框架之数据库查询

    一.在database文件中写明数据库相关信息 二.我们数据库中的表如图所示 三.在CI中查询数据库内容 四.在浏览器输出 不忘初心,如果您认为这篇文章有价值,认同作者的付出,可以微信二维码打赏任意金 ...

  6. CodeIgniter学习笔记二:CI中的query_builder(AR)、连贯操作

    一.开启query_builder 在application\config\database.php中添加如下代码(默认已开启): $query_builder = TRUE; 二.查询数据 //ge ...

  7. Laravel框架中的数据库CURD操作、连贯操作、链式操作的用法

    Laravel是一套简洁.优雅的PHP Web开发框架(PHP Web Framework).它可以让你从面条一样杂乱的代码中解脱出来:它可以帮你构建一个完美的网络APP,而且每行代码都可以简洁.富于 ...

  8. ci连贯操作的limit两个参数和sql是相反的

    ci连贯操作的limit两个参数和sql是相反的 db->where("name =",'mary')->ge() name后面要有个空格否则报错当为一个字段 -> ...

  9. Laravel框架数据库CURD操作、连贯操作

    这篇文章主要介绍了Laravel框架数据库CURD操作.连贯操作.链式操作总结,本文包含大量数据库操作常用方法,需要的朋友可以参考下 一.Selects 检索表中的所有行 $users = DB::t ...

随机推荐

  1. 微信小程序中的iPhone X适配问题

    微信小程序中的iPhone X适配问题 小程序中下方的导航会被iPhone X下面的那条黑线盖住[微笑脸],所以要专门为了iPhone X做样式上的适配[微笑脸] wx.getSystemInfo({ ...

  2. python tips:类的专有属性

    实例通常能够调用类的属性,但是有些属性是类专有的,实例无法调用. 实例调用方法时查找属性时,首先在自己的__dict__中找,找不到去类中找,在类中能够找到的属性都位于dir(cls)中,如果类的某些 ...

  3. 用doxygen风格注释代码生成文档

    目录 用doxygen风格注释代码生成文档 1. 说明 2. 具体操作 2.1 生成头部注释 2.2 安装doxygen 2.3 工程配置 3. 总结 用doxygen风格注释代码生成文档 1. 说明 ...

  4. eas之新建窗口

    public void actionObjectProp_actionPerformed(ActionEvent e)          throws Exception {     UIContex ...

  5. 软件工程1916|W(福州大学)_助教博客】团队Beta冲刺作业(第9次)成绩公示

    1. 作业链接: 项目Beta冲刺(团队) 2. 评分准则: 本次作业包括现场Beta答辩评分(映射总分为100分)+团队互评分数(总分40分)+博客分(总分130分)+贡献度得分,其中博客分由以下部 ...

  6. Nginx面试中最常见的18道题 抱佛脚必备

    Nginx的并发能力在同类型网页服务器中的表现,相对而言是比较好的,因此受到了很多企业的青睐,我国使用Nginx网站的知名用户包括腾讯.淘宝.百度.京东.新浪.网易等等.Nginx是网页服务器运维人员 ...

  7. Spring Cloud 各个组件介绍

    从上图可以看出 Spring Cloud 各个组件相互配合,合作支持了一套完整的微服务架构: Eureka 负责服务的注册与发现,很好地将各服务连接起来. Hystrix 负责监控服务之间的调用情况, ...

  8. poj 3177&&poj 3352加边构双联通(有重边)用tarjan 模板求的

    #include<stdio.h>/* 求边双联通分量和求强连通差不多,先缩点求出叶子节点的个数 */ #include<string.h> #define N 5100 st ...

  9. JAVA的输入输出基本操作样例

    这些类的继承关系有些类似,弄一个作为样例,理解一下其中的机制. package cc.openhome; import java.io.*; public class Member { private ...

  10. POJ 1166 The Clocks (暴搜)

    发现对这样的模拟题根本没啥思路了,本来准备用bfs的.可是结果超时了,这是參考别的人代码写的: #include <stdio.h> #include <iostream> # ...