CI框架配置方面注意的细节

在config里面的database.php里面是和数据库配置相关的内容

  1. $db['default'] = array(
  2. 'dsn' => '',
  3. 'hostname' => '127.0.0.1, //ip
  4. 'username' => 'root',     //用户名
  5. 'password' => 'root',     //密码
  6. 'database' => 'kp_community', //数据库名称
  7. 'dbdriver' => 'mysqli',   //数据库驱动,如果是php7的话只能使用mysqli
  8. 'dbprefix' => 't_',   //数据表前缀,没有可以为空
  9. 'pconnect' => FALSE,   //是否持续连接,一般不推荐TRUE,会影响连接资源
  10. 'db_debug' => (ENVIRONMENT !== 'production'),
  11. 'cache_on' => FALSE,     //缓存
  12. 'cachedir' => '',
  13. 'char_set' => 'utf8', //编码
  14. 'dbcollat' => 'utf8_general_ci',
  15. 'swap_pre' => '',
  16. 'encrypt' => FALSE,
  17. 'compress' => FALSE,
  18. 'stricton' => FALSE,
  19. 'failover' => array(),
  20. 'save_queries' => FALSE  
    //是否保存查询语句,数据库性能非常棒的情况下可以设置为TRUE,可以加快效率,一般设置成什么要看项目的实际情况
  21. );
    //由于CI框架有的时候就算是'pconnect' => FALSE 和 'save_queries' => FALSE 都设置了,还会
    //出现too many contions的错误的话,就检查一下是否是连接数过小了,还需要在代码里面涉及到query
    //后面手动加上$this->db->close(),因为根据使用情况来看CI框架的断开连接机制并不是马上断开
      //而是过几秒再断开的,所以如果在几秒的时间段内同时访问过多可能会出现问题

CI的curd操作

  1. <?php
  2.  
  3. defined('BASEPATH') OR exit('No direct script access allowed');
  4.  
  5. class Test_model extends CI_Model {
  6. //构造函数
  7. public function __construct(){
  8. parent::__construct();
  9. $this->load->database();
  10. }
  11.  
  12. public function Select() {
  13.  
  14. //查询操作,自定义字符串方式
  15. $sql1 = "SELECT * FROM TEST WHERE ID > 1"; //查询id>1的所有值
  16. $query1 = $this->db->query($sql1); //把查询语句转化为结果集
  17. $result1 = $query1->result_array(); //result_array()是转化为二维数组
  18. $count = $query1->num_rows(); //num_rows()是查询结果集的行数
  19.  
  20. $sql2 = "SELECT * FROM TEST WHERE ID = 1"; //查询ID=1的一行值
  21. $query2 = $this->db->query($sql2); //把查询语句转化为结果集
  22. $result2 = $query2->row_array(); //row_array()是转化为一维数组
  23.    //CI的AR类
    $id = array("id"=>2);
       $result3 = $this->where($id)->select("id,userName,xxxxx")->limit(1)->get("test");

  24. //查询行数的不只有num_rows()
  25. $count = $this->db->count_all_results($sql1); //这个用法同样可以实现查询结果集的行数
  26.  
  27. //查询一个表的行数
  28. $tableCount = $this->db->count_all("TEST");//查询TEST表的所有行数
  29. }
  30.  
  31. public function Insert() {
  32.  
  33. $data = array(
  34. "id" => 3,
  35. "name"=> "测试数据"
  36. );
  37. //第一种方法,CI的insert方法
  38. $this->db->insert("TEST",$data);//往TEST表里面插入data的数据
  39. echo $this->db->affected_rows();//影响行数
  40.  
  41. //第二种方法,通过query
  42. $sql = "INSERT INTO TEST(id,name) VALUES(3,'测试数据')";
  43. $this->db->query($sql);
  44. echo $this->db->affected_rows();//影响行数
  45. }
  46.  
  47. public function Delete() {
  48.  
  49. //第一种方法,CI的delete方法
  50. $this->db->where(array("id"=>1))->delete("TEST");//TEST表里面删除id=1的数据
  51. echo $this->db->affected_rows();//影响行数
  52.  
  53. //第二种方法,通过query
  54. $sql = "DELETE FROM TEST WHERE id = 1";
  55. $this->db->query($sql);
  56. echo $this->db->affected_rows();//影响行数
  57. }
  58.  
  59. public function Update() {
  60.  
  61. $newdata = array(
  62. "name" => "新的测试数据"
  63. );
  64. //第一种方法,CI的update方法
  65. $this->db->where(array("id"=>3))->update("TEST",$newdata);//TEST表中id=3的数据更新为newdata
  66. echo $this->db->affected_rows();//影响行数
  67.  
  68. //第二种方法,通过query
  69. $sql = "UPDATE TEST SET name = '新的测试数据' WHERE id = 3";
  70. $this->db->query($sql);
  71. echo $this->db->affected_rows();//影响行数
  72. }
  73.  
  74. public function Trans() {
  75. $this->db->trans_begin();
  76. /*
  77. 一大串CURD的数据操作
  78. */
  79. if( $this->db->trans_status() === FALSE ) {
  80.  
  81. $this->db->trans_rollback(); //事务回滚
  82. $this->db->close();
  83. return -1;
  84. } else {
  85.  
  86. $this->db->trans_commit(); //事务提交
  87. $this->db->close();
  88. return 1;
  89. }
  90. }
  91.  
  92. }

CI框架的json输出格式

  1. <?php
  2.  
  3. defined('BASEPATH') OR exit('No direct script access allowed');
  4. error_reporting(E_ERROR | E_WARNING | E_PARSE);
  5.  
  6. class Test extends CI_Controller {
  7.  
  8. const STATUS = 1998; //如果SESSION失效后的状态码
  9. const WYID = 'com_wyId';//物业ID
  10. const CODE = 'com_code';//重定向单点登陆接口返回的code,有效期2分钟,使用一次后失效
  11. const ACCESSTOKEN = 'com_accesstoken';//获取到的访问凭证
  12. //const WYID = 'com_wyId';//物业ID
  13. const LOGININFO = 'com_info';//登录判断条件
  14. //构造方法
  15. public function __construct(){
  16. parent::__construct();
  17. //加载模型
  18. $this->load->model('test_model');
  19. $this->load->library('session');
  20. }
  21.  
  22. public function Test() {
  23.      $arr = array("id"=>1,"name"=>"我的名字");
  24. //以JSON格式输出
  25. $this -> output
  26. -> set_content_type('application/json')
  27. -> set_output(json_encode($arr));
  28. }
  29. }
  30.  
  31. ?>

PHP CI框架最近学到的内容的更多相关文章

  1. CI框架整合yar

    第一步:在CI框架中libraries目录下建立yar.php 文件 内容: <?php /** * yar 接口 */ class Yar { /** * 构造函数 * * @return v ...

  2. CI框架对HTML输入的处理/CI框架引用ueditor时对提交内容的默认处理

    项目里近期用到了富文本编辑器,可是写入数据的时候总是写入, <p xss="removed">内容</p> 所有的样式都会被改写成这样,xss=" ...

  3. CI框架使用PHPmailer发送邮件找回密码

    之前用PHP+Mysql+jQuery结合ThinkPHP做了一个用户验证邮箱找回密码功能<ThinkPHP之PHP+Mysql+jQuery发送邮箱找回密码>,现在分享一下用CI框架结合 ...

  4. 【军哥谈CI框架】之CI中集成百度UEditor

    Hello,各位亲,新的一周来临啦,很高兴这么快又跟大家伙见面!话说上一回,军哥带大家用JQuery写了一个城市级联菜单的例子 ,不知道亲们学会了多少,是否自己可以独立写出来了呢. 军哥很是期待大家学 ...

  5. CI框架使用PHPmail插件发送QQ邮件:

    有助请顶,不好请评.0:33 2016/3/12CI框架使用PHPmail插件发送QQ邮件:发送成功,不过修改了主机参数,还包含了一个phpmail中的一个另外的文件,详见下方:参见:http://c ...

  6. CI框架如何在主目录application目录之外使用uploadify上传插件和bootstrap前端框架:

    19:29 2016/3/10CI框架如何在主目录application目录之外使用uploadify上传插件和bootstrap前端框架:项目主路径:F:\wamp\www\graduationPr ...

  7. PHP项目感悟 -- 从CI框架来看iOS的MVC

    其实这几天一直都想找时间把这个感悟整理出来,也是这一段一直思考的问题,因为这一段参加一个PHP后台项目的开发,框架使用的是CI,随着项目的进展,对于CI接触的也越多,但是由于理解的可能并不深刻,我也只 ...

  8. CI框架源码阅读笔记9 CI的自动加载机制autoload

    本篇并不是对某一组件的详细源码分析,而只是简单的跟踪了下CI的autoload的基本流程.因此,可以看做是Loader组件的分析前篇. CI框架中,允许你配置autoload数组,这样,在你的应用程序 ...

  9. CI框架源码阅读笔记3 全局函数Common.php

    从本篇开始,将深入CI框架的内部,一步步去探索这个框架的实现.结构和设计. Common.php文件定义了一系列的全局函数(一般来说,全局函数具有最高的加载优先权,因此大多数的框架中BootStrap ...

随机推荐

  1. dataset 用法(3)

    ReadXml 提供了只将数据或同时将数据和架构从 XML 文档读入 DataSet 的方式(若要同时读数据和架构,请使用包括 mode 参数的 ReadXML 重载之一,并将其值设置为 ReadSc ...

  2. SQL学习之汇总数据之聚集函数

    一. 1.我们经常需要汇总数据而不用把他们实际检索出来,为此SQL提供了专门的函数,以便于分析数据和报表生成,这些函数的功能有: (1)确定表中行数(或者满足单个条件或多个条件或包含某个特定值的行数) ...

  3. Android学习笔记_点九绘图与软键盘和事件传递

    最近项目里遇到的几个小问题,以前只是用吗没有深入看过,现在总结到一起,防止以后这种小问题占用太多时间.还是通过网上别人总结的很多博客学习了,挑选出最易懂明了的. 还有leader很小的问题都不放过,亲 ...

  4. spring mvc框架 遇到的问题

    web.xml配置文件代码: <?xml version="1.0" encoding="UTF-8"?> <web-app version= ...

  5. ubuntu10.04 安装NVIDIA GT 420M驱动

    安装ubuntu已经好几天了,由于显卡驱动没装,屏幕在600X800下的效果很难看,于是就想办法,查阅资料终于安装成功了,下面将我的安装方法记录下来以供大家参考. 借鉴:ubuntu12.04下安装N ...

  6. 向上取整Ceil,向下取整Floor,四舍五入Round

    几个数值函数的功能实现: (1)int Ceil(float f) int Ceil(float f) { int integer = (int)f; if (f > (float)intege ...

  7. A - A

    A - A Time Limit:1000MS     Memory Limit:65536KB     64bit IO Format:%I64d & %I64u Submit Status ...

  8. Android WindowManager 小结

    Android---系统服务之 ---WindowManager WindowManager是Android中一个重要的服务(Service ).WindowManager Service 是全局的, ...

  9. js 调用 android 安卓 代码

    说明一下注意版本问题,不加没效果的 @JavascriptInterface //sdk17版本以上加上注解 //Html调用此方法传递数据 public void show() { Toast.ma ...

  10. poj 3270 置换

    poj 置换的应用 黑书原题P248 /** 题意: 给定序列, 将其按升序排列, 每次交换的代价是两个数之和, 问代价最小是多少 思路:1.对于同一个循环节之内的,肯定是最小的与别的交换代价最小 2 ...