TP框架常用(一)

时间:2021-12-28 04:39:56
  1. 25、显示最后一条查询的sql语句:主要用于在连贯操作时,检测拼接的sql语句是否正确
  2. echo $this->db->last_query();//如:select * from pt_users where uid>10 order by datetime desc limit 0,10
  1. 26、CI_DB_pdo_driver PDO数据库驱动类
  2. $this->db->affected_rows();//影响记录数(事务中常用),区分:$this->db->get("order_master")->num_rows();//获取到的结果集行数
  3. $this->db->count_all("order_master");//对于某个表不带条件的查询
  4. $this->db->count_all_results();//快捷操作类方法,适用于带条件的查询
  5. $this->db->insert_id();//新插入记录的id(常用于插入是否成功的判断)
  6. $this->db->trans_enabled = true;//开启事务(默认是false,所以在使用事务前必须将其赋值为true)
  7. $this->db->trans_begin();//开始事务
  8. $this->db->trans_rollback();//事务回滚
  9. $this->db->trans_commit();//提交事务
  10. $this->db->trans_status();//事务状态 true 或 false         CI_DB_driver驱动类中的方法
  1. 27、CI_DB_mysql_driver  mysql数据库驱动类
  2. $this->db->affected_rows();//影响记录数(事务中常用),区分:$this->db->get("order_master")->num_rows();//获取到的结果集行数
  3. $this->db->count_all("order_master");//对于某个表不带条件的查询
  4. $this->db->count_all_results();//快捷操作类方法,适用于带条件的查询
  5. $this->db->insert_id();//新插入记录的id(常用于插入是否成功的判断)
  6. $this->db->trans_enabled = true;//开启事务(默认是false,所以在使用事务前必须将其赋值为true)
  7. $this->db->trans_begin();//开始事务
  8. $this->db->trans_rollback();//事务回滚
  9. $this->db->trans_commit();//提交事务
  10. $this->db->trans_status();//事务状态 true 或 false         CI_DB_driver驱动类中的方法
  1. 28、CI_DB_mysqli_driver  mysqli数据库驱动类
  2. $this->db->affected_rows();//影响记录数(事务中常用)<span id="transmark"></span>,区分:$this->db->get("order_master")->num_rows();//获取到的结果集行数
  3. $this->db->count_all("order_master");//对于某个表不带条件的查询
  4. $this->db->count_all_results();//快捷操作类方法,适用于带条件的查询
  5. $this->db->insert_id();//新插入记录的id(常用于插入是否成功的判断)<span id="transmark"></span>
  6. $this->db->trans_enabled = true;//开启事务(默认是false,所以在使用事务前必须将其赋值为true)
  7. $this->db->trans_begin();//开始事务
  8. $this->db->trans_rollback();//事务回滚
  9. $this->db->trans_commit();//提交事务
  10. $this->db->trans_status();//事务状态 true 或 false         CI_DB_driver驱动类中的方法
  1. 29、model模型类中引用其它model模型类(如:category_model)和数据库(如:product)
  2. public function __construct() {
  3. parent::__construct();
  4. $this->product_db = $this->load->database('product', true);//通过model基类中的__get()方法选择性的引入CI超级对象中已加载类库,如:"load"
  5. $this->load->model('category_model');
  6. }
  1. 30、控制器中引用其它模型类(如:category_model)和数据库(如:product)
  2. public function __construct() {
  3. parent::__construct();
  4. $this->product_db = $this->load->database('product', true);
  5. $this->load->model('category_model');
  6. }
  1. 31、helper函数中引用CI超级对象的方法
  2. function get_order_status_by_order($order_status){
  3. $CI =& get_instance();//获取CI超级对象
  4. $CI->load->Model('order_model');//通过CI超级对象可以载入任何模型
  5. }
  1. 32、缓存驱动的加载方式
  2. $this->load->driver('cache', array('adapter' => 'memcached'));//加载缓存驱动或缓存适配器,当前为memcached缓存;注意:CI框架只支持memcached,不支持memcache,windows操作系统下只有memcache扩展
  3. $this->load->driver('cache', array('adapter' => 'file'));//加载缓存驱动或缓存适配器,当前为file缓存
  4. $this->load->driver('cache', array('adapter' => 'redis'));//加载缓存驱动或缓存适配器,当前为redis缓存
  5. $this->load->driver('cache', array('adapter' => 'apc', 'backup' => 'file'));//优先选择apc缓存,file文件缓存作为替代方案;如果服务器不支持apc缓存时,选择file文件缓存
  1. 33、静态html模板文件中如何动态加载区域块内容
  2. //index.html文件
  3. <div include="/index.php/pub/common_nav" rel="include"></div>
  4. //jquery代码
  5. $(document).ready(function () {
  6. $('[rel=\'include\']').each(function (e) {
  7. var t = $(this),
  8. url = t.attr('include') + location.search;
  9. url && $.get(url, function (data) {//url:'/index.php/pub/common_nav'
  10. t.html(data);
  11. })
  12. })
  13. })
  1. 34、拼接insert sql语句
  2. /**
  3. *一维关联数组,拼接sql语句
  4. *$data['username']="admin";
  5. *$data['password']="12345";
  6. *$data['sex']="";
  7. */
  8. function add_user( $data ) {
  9. if ( empty($data) || !is_array($data) ) {
  10. return false;
  11. }
  12. foreach ($data as $key => $value) {
  13. if ( $value === '') {
  14. unset($data[$key]);//删除数组中值为空的元素
  15. }
  16. }
  17. $cols = array_keys($data);//获取数组所有的键名
  18. $values = array_values($data);//获取数组所有的值
  19. $cols_str = implode(",", $cols);//将数组所有的键名拼接成一个字符串
  20. $values_str = "'".implode("','", $values)."'";//将数组所有的键值放到单引号中
  21. //拼接sql:INSERT INTO user (username,password) VALUES ('admin','12345');
  22. $sql = "INSERT INTO user ({$cols_str}) VALUES ({$values_str})";//拼接sql
  23. $this->db->query($sql);
  24. }
  1. 35、拼接insert sql语句
  2. /**
  3. *一维关联数组,拼接sql语句
  4. *$data['username']="admin";
  5. *$data['password']="12345";
  6. *$data['sex']="";
  7. */
  8. function add_user( $data ) {
  9. if ( empty($data) || !is_array($data) ) {
  10. return false;
  11. }
  12. foreach ($data as $key => $value) {
  13. if ( $value === '') {
  14. unset($data[$key]);//删除数组中值为空的元素
  15. }
  16. }
  17. $cols = array_keys($data);//获取数组所有的键名
  18. $values = array_values($data);//获取数组所有的值
  19. foreach($values as $k=>$val){
  20. $values[$k]="'".$val."'";//将所有的键值放到单引号中
  21. }
  22. $cols_str = implode(",", $cols);//将数组所有的键名拼接成一个字符串
  23. $values_str = implode(",", $values);//将数组所有的键值拼接成一个字符串
  24. //拼接sql:INSERT INTO user (username,password) VALUES ('admin','12345');
  25. $sql = "INSERT INTO user ({$cols_str}) VALUES ({$values_str})";//拼接sql
  26. $this->db->query($sql);
  27. }
  1. 36、拼接update sql语句
  2. /**
  3. * 编辑用户信息
  4. * $userid=1;
  5. * $data['username']='admin';
  6. * $data['password']='123';
  7. */
  8. function edit_user(userid, $data) {
  9. if ( empty($data) || !is_array($data) ) {
  10. return;
  11. }
  12. foreach ($data as $key => $value) {
  13. $str .= isset($str)?", {$key} = '{$value}'":"{$key} = '{$value}'";
  14. }
  15. //拼接sql:UPDATE user SET username='admin',password='123' WHERE addr_id = '1';
  16. $sql = "UPDATE user SET {$str} WHERE addr_id = '{$addr_id}'";
  17. $this->db->query($sql);
  18. }
  1. 37、数据库快捷操作类常用方法
  2. /**
  3. * 查询订单
  4. *
  5. * @param $query
  6. */
  7. public function get_order_list($query, $offset = 0, $limit = 20) {
  8. if (is_array($query) && !empty($query)) {
  9. foreach ($query as $key => $val) {
  10. if (is_array($val)) {
  11. $this->order_db->where_in($key, $val);
  12. } else {
  13. $this->order_db->where($key, $val);
  14. }
  15. }
  16. }
  17. $this->order_db->order_by('updatetime', 'desc');
  18. $this->order_db->order_by('id', 'desc');
  19. if (!$limit) {
  20. $query = $this->order_db->get('order');
  21. } else {
  22. $query = $this->order_db->get('order', $limit, $offset);
  23. }
  24. if ($query->num_rows() > 0) {
  25. return $query->result_array();
  26. }
  27. return array();
  28. }
  1. 38、拼接select sql语句
  2. function get_user_list($cols=array("username","password")) {
  3. $col=implode(",",$cols);//查询的列属性
  4. $sql = "SELECT $col FROM user ORDER BY addr_id DESC";
  5. $this->db->query($sql)->result_array();
  6. }
  1. 39、CI框架中cookie的三种使用方式
  2. //第一种设置cookie的方式:采用php原生态的方法设置的cookie的值
  3. setcookie("user_id",$user_info['user_id'],86500);
  4. setcookie("username",$user_info['username'],86500);
  5. setcookie("password",$user_info['password'],86500);
  6. //echo $_COOKIE['username'];
  7. //第二种设置cookie的方式:通过CI框架的input类库设置cookie的值
  8. $this->input->set_cookie("username",$user_info['username'],60);
  9. $this->input->set_cookie("password",$user_info['password'],60);
  10. $this->input->set_cookie("user_id",$user_info['user_id'],60);
  11. //echo $this->input->cookie("password");//适用于控制器
  12. //echo $this->input->cookie("username");//适用于控制器
  13. //echo $_COOKIE['username'];//在模型类中可以通过这种方式获取cookie值
  14. //echo $_COOKIE['password'];//在模型类中可以通过这种方式获取cookie值
  15. //第三种设置cookie的方式:通过CI框架的cookie_helper.php辅助函数库设置cookie的值
  16. set_cookie("username",$user_info['username'],60);
  17. set_cookie("password",$user_info['password'],60);
  18. set_cookie("user_id",$user_info['user_id'],60);
  19. //echo get_cookie("username");
  1. 40、array_merge()合并数组函数的使用
  2. <?php
  3. header("content-type:text/html;charset='utf-8'");
  4. $arr1=array(
  5. "13012"=>array(
  6. "brand_id"=>2,
  7. "category_id"=>3
  8. )
  9. );
  10. $arr2=array(
  11. "13012"=>array(
  12. "goods_id"=>3576,
  13. "goods_name"=>"sanyang"
  14. )
  15. );
  16. /**
  17. *echo "<pre>";print_r(array_merge($arr1,$arr2));
  18. *结果:
  19. *Array
  20. *  (
  21. *      [0] => Array //索引重置为数字索引
  22. *          (
  23. *              [brand_id] => 2
  24. *              [category_id] => 3
  25. *          )
  26. *      [1] => Array
  27. *          (
  28. *              [goods_id] => 3576
  29. *              [goods_name] => sanyang
  30. *          )
  31. *  )
  32. */
  33. /**
  34. *echo "<pre>";print_r(array_merge($arr1['13012'],$arr2['13012']));
  35. *结果:
  36. *  Array
  37. *  (
  38. *      [brand_id] => 2
  39. *      [category_id] => 3
  40. *      [goods_id] => 3576
  41. *      [goods_name] => sanyang
  42. *  )
  43. */
  44. ?>
  1. 41.json格式数据:
  2. public function json(){
  3. $data[0]['goods_id']=3567;
  4. $data[0]['goods_name']="sanyang";
  5. $data[1]['goods_id']=3567;
  6. $data[1]['goods_name']="sanyang";
  7. echo json_encode($data);exit;
  8. /**
  9. * 结果:
  10. * [
  11. *    {
  12. *        "goods_id": 3567,
  13. *        "goods_name": "sanyang"
  14. *    },
  15. *    {
  16. *        "goods_id": 3567,
  17. *        "goods_name": "sanyang"
  18. *    }
  19. *]
  20. */
  21. }
  1. 42.联合查询 left join
  2. //controller控制器
  3. $query = array(
  4. 'product_id' => $product_id,
  5. 'activity.status' => array(1, 2, 0),
  6. 'activity.is_del' => 0
  7. );
  8. $query['activity.activity_id<>'] = $activity_id;
  9. $goods_list = $this->activity_model->get_activity_good_mapping($query, 0, 0);
  10. //model模型
  11. public function get_activity_good_mapping($query,$offset = 0, $limit = 0,$get=''){
  12. $this->db = $this->activity_db;
  13. if (is_array($query) && !empty($query)) {
  14. foreach ($query as $key => $val) {
  15. if (is_array($val)) {
  16. $this->db->where_in($key, $val);
  17. } else {
  18. $this->db->where($key, $val);
  19. }
  20. }
  21. }
  22. $this->db->from('activity_goods');
  23. $this->db->join('activity', 'activity_goods.activity_id = activity.activity_id','left');
  24. if (!$limit) {
  25. } else {
  26. $query = $this->db->limit($limit, $offset);
  27. }
  28. $query = $this->db->get();
  29. if ($query->num_rows() > 0) {
  30. return $query->result_array();
  31. }
  32. return array();
  33. }
  1. 43.ci框架如何记录sql日志?
  2. (1)配置日志目录: 在"application/config/config.php" 文件中配置日志目录
  3. $config['log_path']="/opt/www/logs/";
  4. (2)在 "system/database/DB_driver.php" 文件的query()方法末尾添加如下语句:
  5. log_message( 'db','【sql语句:'.$this->last_query().'】');//这样所有执行过的sql语句都会按日期时间格式记录到 "/opt/www/logs/" 目录下
  6. return $RES;
  1. //44、根据条件获取记录数(效率最高版)
  2. public function get_record_count_by_condition($tablename,$condition,$likecondition,$cols){
  3. if(!empty($cols)){
  4. $this->db->select("count(*) as num");
  5. }else{
  6. $this->db->select("count(*) as num");
  7. }
  8. if (is_array($condition) && !empty($condition)) {
  9. foreach ($condition as $key => $val) {
  10. if (is_array($val)) {
  11. $this->db->where_in($key, $val);
  12. } else {
  13. $this->db->where($key, $val);
  14. }
  15. }
  16. }
  17. if (is_array($likecondition) && !empty($likecondition)) {
  18. foreach ($likecondition as $key => $val) {
  19. $this->db->like($key, $val);
  20. }
  21. }
  22. $num_info=$this-><span id="transmark"></span>db->get($tablename)->row_array();
  23. if($num_info['num'] > 0){
  24. return $num_info['num'];
  25. }else{
  26. return 0;
  27. }
  28. }
  1. //45、去除$aid_arr_temp数组中元素
  2. foreach($content_list_temp_recommend as $k=>$v){
  3. $kk=array_search($v['aid'], $aid_arr_temp);//$v['aid']必定是$aid_arr_temp数组内元素之一的情况
  4. $msg.=$aid_arr_temp[$kk].",";
  5. if($kk !== false){//只要不是false就是找到了
  6. unset($aid_arr_temp[$kk]);//删除后,索引键保持不变
  7. }
  8. }
  9. $aid_arr=  array_values($aid_arr_temp);//经过array_values()函数处理过后,索引键重新分配
    1. //46、处理提交数据为0的情况 下拉菜单:""-全部 0-未审核 1-已审核
    2. //$state = $this->input->post('state', true) ? $this->input->post('state', true):"";//值始终为空
    3. $state = is_numeric($this->input->post('state', true)) ? $this->input->post('state', true):"";//0时值为0,空时值为空
    4. if(is_numeric($state)){
    5. $condition['state']=$state;//字段值为0
    6. }else{
    7. $state="";
    8. }
    9. $data['state']= (string)$state
    10. $this->load->view('content_list', $data);
    11. <td>
    12. <label>状态:</label>
    13. </td>
    14. <td>
    15. <select name="state" class="combox">
    16. <option value="" <?php if( "" ===$state)echo 'selected'?>>全部</option>
    17. <option value="0" <?php if("0" === $state)echo 'selected'?>>未审核</option>
    18. <option value="1" <?php if("1" === $state)echo 'selected'?>>已审核</option>
    19. </select>
    20. </td>