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 32 ?>