- 25、顯示最后一條查詢的sql語句:主要用於在連貫操作時,檢測拼接的sql語句是否正確
- echo $this->db->last_query();//如:select * from pt_users where uid>10 order by datetime desc limit 0,10
- 26、CI_DB_pdo_driver PDO數據庫驅動類
- $this->db->affected_rows();//影響記錄數(事務中常用),區分:$this->db->get("order_master")->num_rows();//獲取到的結果集行數
- $this->db->count_all("order_master");//對於某個表不帶條件的查詢
- $this->db->count_all_results();//快捷操作類方法,適用於帶條件的查詢
- $this->db->insert_id();//新插入記錄的id(常用於插入是否成功的判斷)
- $this->db->trans_enabled = true;//開啟事務(默認是false,所以在使用事務前必須將其賦值為true)
- $this->db->trans_begin();//開始事務
- $this->db->trans_rollback();//事務回滾
- $this->db->trans_commit();//提交事務
- $this->db->trans_status();//事務狀態 true 或 false CI_DB_driver驅動類中的方法
- 27、CI_DB_mysql_driver mysql數據庫驅動類
- $this->db->affected_rows();//影響記錄數(事務中常用),區分:$this->db->get("order_master")->num_rows();//獲取到的結果集行數
- $this->db->count_all("order_master");//對於某個表不帶條件的查詢
- $this->db->count_all_results();//快捷操作類方法,適用於帶條件的查詢
- $this->db->insert_id();//新插入記錄的id(常用於插入是否成功的判斷)
- $this->db->trans_enabled = true;//開啟事務(默認是false,所以在使用事務前必須將其賦值為true)
- $this->db->trans_begin();//開始事務
- $this->db->trans_rollback();//事務回滾
- $this->db->trans_commit();//提交事務
- $this->db->trans_status();//事務狀態 true 或 false CI_DB_driver驅動類中的方法
- 28、CI_DB_mysqli_driver mysqli數據庫驅動類
- $this->db->affected_rows();//影響記錄數(事務中常用)<span id="transmark"></span>,區分:$this->db->get("order_master")->num_rows();//獲取到的結果集行數
- $this->db->count_all("order_master");//對於某個表不帶條件的查詢
- $this->db->count_all_results();//快捷操作類方法,適用於帶條件的查詢
- $this->db->insert_id();//新插入記錄的id(常用於插入是否成功的判斷)<span id="transmark"></span>
- $this->db->trans_enabled = true;//開啟事務(默認是false,所以在使用事務前必須將其賦值為true)
- $this->db->trans_begin();//開始事務
- $this->db->trans_rollback();//事務回滾
- $this->db->trans_commit();//提交事務
- $this->db->trans_status();//事務狀態 true 或 false CI_DB_driver驅動類中的方法
- 29、model模型類中引用其它model模型類(如:category_model)和數據庫(如:product)
- public function __construct() {
- parent::__construct();
- $this->product_db = $this->load->database('product', true);//通過model基類中的__get()方法選擇性的引入CI超級對象中已加載類庫,如:"load"
- $this->load->model('category_model');
- }
- 30、控制器中引用其它模型類(如:category_model)和數據庫(如:product)
- public function __construct() {
- parent::__construct();
- $this->product_db = $this->load->database('product', true);
- $this->load->model('category_model');
- }
- 31、helper函數中引用CI超級對象的方法
- function get_order_status_by_order($order_status){
- $CI =& get_instance();//獲取CI超級對象
- $CI->load->Model('order_model');//通過CI超級對象可以載入任何模型
- }
- 32、緩存驅動的加載方式
- $this->load->driver('cache', array('adapter' => 'memcached'));//加載緩存驅動或緩存適配器,當前為memcached緩存;注意:CI框架只支持memcached,不支持memcache,windows操作系統下只有memcache擴展
- $this->load->driver('cache', array('adapter' => 'file'));//加載緩存驅動或緩存適配器,當前為file緩存
- $this->load->driver('cache', array('adapter' => 'redis'));//加載緩存驅動或緩存適配器,當前為redis緩存
- $this->load->driver('cache', array('adapter' => 'apc', 'backup' => 'file'));//優先選擇apc緩存,file文件緩存作為替代方案;如果服務器不支持apc緩存時,選擇file文件緩存
- 33、靜態html模板文件中如何動態加載區域塊內容
- //index.html文件
- <div include="/index.php/pub/common_nav" rel="include"></div>
- //jquery代碼
- $(document).ready(function () {
- $('[rel=\'include\']').each(function (e) {
- var t = $(this),
- url = t.attr('include') + location.search;
- url && $.get(url, function (data) {//url:'/index.php/pub/common_nav'
- t.html(data);
- })
- })
- })
- 34、拼接insert sql語句
- /**
- *一維關聯數組,拼接sql語句
- *$data['username']="admin";
- *$data['password']="12345";
- *$data['sex']="";
- */
- function add_user( $data ) {
- if ( empty($data) || !is_array($data) ) {
- return false;
- }
- foreach ($data as $key => $value) {
- if ( $value === '') {
- unset($data[$key]);//刪除數組中值為空的元素
- }
- }
- $cols = array_keys($data);//獲取數組所有的鍵名
- $values = array_values($data);//獲取數組所有的值
- $cols_str = implode(",", $cols);//將數組所有的鍵名拼接成一個字符串
- $values_str = "'".implode("','", $values)."'";//將數組所有的鍵值放到單引號中
- //拼接sql:INSERT INTO user (username,password) VALUES ('admin','12345');
- $sql = "INSERT INTO user ({$cols_str}) VALUES ({$values_str})";//拼接sql
- $this->db->query($sql);
- }
- 35、拼接insert sql語句
- /**
- *一維關聯數組,拼接sql語句
- *$data['username']="admin";
- *$data['password']="12345";
- *$data['sex']="";
- */
- function add_user( $data ) {
- if ( empty($data) || !is_array($data) ) {
- return false;
- }
- foreach ($data as $key => $value) {
- if ( $value === '') {
- unset($data[$key]);//刪除數組中值為空的元素
- }
- }
- $cols = array_keys($data);//獲取數組所有的鍵名
- $values = array_values($data);//獲取數組所有的值
- foreach($values as $k=>$val){
- $values[$k]="'".$val."'";//將所有的鍵值放到單引號中
- }
- $cols_str = implode(",", $cols);//將數組所有的鍵名拼接成一個字符串
- $values_str = implode(",", $values);//將數組所有的鍵值拼接成一個字符串
- //拼接sql:INSERT INTO user (username,password) VALUES ('admin','12345');
- $sql = "INSERT INTO user ({$cols_str}) VALUES ({$values_str})";//拼接sql
- $this->db->query($sql);
- }
- 36、拼接update sql語句
- /**
- * 編輯用戶信息
- * $userid=1;
- * $data['username']='admin';
- * $data['password']='123';
- */
- function edit_user(userid, $data) {
- if ( empty($data) || !is_array($data) ) {
- return;
- }
- foreach ($data as $key => $value) {
- $str .= isset($str)?", {$key} = '{$value}'":"{$key} = '{$value}'";
- }
- //拼接sql:UPDATE user SET username='admin',password='123' WHERE addr_id = '1';
- $sql = "UPDATE user SET {$str} WHERE addr_id = '{$addr_id}'";
- $this->db->query($sql);
- }
- 37、數據庫快捷操作類常用方法
- /**
- * 查詢訂單
- *
- * @param $query
- */
- public function get_order_list($query, $offset = 0, $limit = 20) {
- if (is_array($query) && !empty($query)) {
- foreach ($query as $key => $val) {
- if (is_array($val)) {
- $this->order_db->where_in($key, $val);
- } else {
- $this->order_db->where($key, $val);
- }
- }
- }
- $this->order_db->order_by('updatetime', 'desc');
- $this->order_db->order_by('id', 'desc');
- if (!$limit) {
- $query = $this->order_db->get('order');
- } else {
- $query = $this->order_db->get('order', $limit, $offset);
- }
- if ($query->num_rows() > 0) {
- return $query->result_array();
- }
- return array();
- }
- 38、拼接select sql語句
- function get_user_list($cols=array("username","password")) {
- $col=implode(",",$cols);//查詢的列屬性
- $sql = "SELECT $col FROM user ORDER BY addr_id DESC";
- $this->db->query($sql)->result_array();
- }
- 39、CI框架中cookie的三種使用方式
- //第一種設置cookie的方式:采用php原生態的方法設置的cookie的值
- setcookie("user_id",$user_info['user_id'],86500);
- setcookie("username",$user_info['username'],86500);
- setcookie("password",$user_info['password'],86500);
- //echo $_COOKIE['username'];
- //第二種設置cookie的方式:通過CI框架的input類庫設置cookie的值
- $this->input->set_cookie("username",$user_info['username'],60);
- $this->input->set_cookie("password",$user_info['password'],60);
- $this->input->set_cookie("user_id",$user_info['user_id'],60);
- //echo $this->input->cookie("password");//適用於控制器
- //echo $this->input->cookie("username");//適用於控制器
- //echo $_COOKIE['username'];//在模型類中可以通過這種方式獲取cookie值
- //echo $_COOKIE['password'];//在模型類中可以通過這種方式獲取cookie值
- //第三種設置cookie的方式:通過CI框架的cookie_helper.php輔助函數庫設置cookie的值
- set_cookie("username",$user_info['username'],60);
- set_cookie("password",$user_info['password'],60);
- set_cookie("user_id",$user_info['user_id'],60);
- //echo get_cookie("username");
- 40、array_merge()合並數組函數的使用
- <?php
- header("content-type:text/html;charset='utf-8'");
- $arr1=array(
- "13012"=>array(
- "brand_id"=>2,
- "category_id"=>3
- )
- );
- $arr2=array(
- "13012"=>array(
- "goods_id"=>3576,
- "goods_name"=>"sanyang"
- )
- );
- /**
- *echo "<pre>";print_r(array_merge($arr1,$arr2));
- *結果:
- *Array
- * (
- * [0] => Array //索引重置為數字索引
- * (
- * [brand_id] => 2
- * [category_id] => 3
- * )
- * [1] => Array
- * (
- * [goods_id] => 3576
- * [goods_name] => sanyang
- * )
- * )
- */
- /**
- *echo "<pre>";print_r(array_merge($arr1['13012'],$arr2['13012']));
- *結果:
- * Array
- * (
- * [brand_id] => 2
- * [category_id] => 3
- * [goods_id] => 3576
- * [goods_name] => sanyang
- * )
- */
- ?>
- 41.json格式數據:
- public function json(){
- $data[0]['goods_id']=3567;
- $data[0]['goods_name']="sanyang";
- $data[1]['goods_id']=3567;
- $data[1]['goods_name']="sanyang";
- echo json_encode($data);exit;
- /**
- * 結果:
- * [
- * {
- * "goods_id": 3567,
- * "goods_name": "sanyang"
- * },
- * {
- * "goods_id": 3567,
- * "goods_name": "sanyang"
- * }
- *]
- */
- }
- 42.聯合查詢 left join
- //controller控制器
- $query = array(
- 'product_id' => $product_id,
- 'activity.status' => array(1, 2, 0),
- 'activity.is_del' => 0
- );
- $query['activity.activity_id<>'] = $activity_id;
- $goods_list = $this->activity_model->get_activity_good_mapping($query, 0, 0);
- //model模型
- public function get_activity_good_mapping($query,$offset = 0, $limit = 0,$get=''){
- $this->db = $this->activity_db;
- if (is_array($query) && !empty($query)) {
- foreach ($query as $key => $val) {
- if (is_array($val)) {
- $this->db->where_in($key, $val);
- } else {
- $this->db->where($key, $val);
- }
- }
- }
- $this->db->from('activity_goods');
- $this->db->join('activity', 'activity_goods.activity_id = activity.activity_id','left');
- if (!$limit) {
- } else {
- $query = $this->db->limit($limit, $offset);
- }
- $query = $this->db->get();
- if ($query->num_rows() > 0) {
- return $query->result_array();
- }
- return array();
- }
- 43.ci框架如何記錄sql日志?
- (1)配置日志目錄: 在"application/config/config.php" 文件中配置日志目錄
- $config['log_path']="/opt/www/logs/";
- (2)在 "system/database/DB_driver.php" 文件的query()方法末尾添加如下語句:
- log_message( 'db','【sql語句:'.$this->last_query().'】');//這樣所有執行過的sql語句都會按日期時間格式記錄到 "/opt/www/logs/" 目錄下
- return $RES;
- //44、根據條件獲取記錄數(效率最高版)
- public function get_record_count_by_condition($tablename,$condition,$likecondition,$cols){
- if(!empty($cols)){
- $this->db->select("count(*) as num");
- }else{
- $this->db->select("count(*) as num");
- }
- if (is_array($condition) && !empty($condition)) {
- foreach ($condition as $key => $val) {
- if (is_array($val)) {
- $this->db->where_in($key, $val);
- } else {
- $this->db->where($key, $val);
- }
- }
- }
- if (is_array($likecondition) && !empty($likecondition)) {
- foreach ($likecondition as $key => $val) {
- $this->db->like($key, $val);
- }
- }
- $num_info=$this-><span id="transmark"></span>db->get($tablename)->row_array();
- if($num_info['num'] > 0){
- return $num_info['num'];
- }else{
- return 0;
- }
- }
- //45、去除$aid_arr_temp數組中元素
- foreach($content_list_temp_recommend as $k=>$v){
- $kk=array_search($v['aid'], $aid_arr_temp);//$v['aid']必定是$aid_arr_temp數組內元素之一的情況
- $msg.=$aid_arr_temp[$kk].",";
- if($kk !== false){//只要不是false就是找到了
- unset($aid_arr_temp[$kk]);//刪除后,索引鍵保持不變
- }
- }
- $aid_arr= array_values($aid_arr_temp);//經過array_values()函數處理過后,索引鍵重新分配
- //46、處理提交數據為0的情況 下拉菜單:""-全部 0-未審核 1-已審核
- //$state = $this->input->post('state', true) ? $this->input->post('state', true):"";//值始終為空
- $state = is_numeric($this->input->post('state', true)) ? $this->input->post('state', true):"";//0時值為0,空時值為空
- if(is_numeric($state)){
- $condition['state']=$state;//字段值為0
- }else{
- $state="";
- }
- $data['state']= (string)$state
- $this->load->view('content_list', $data);
- <td>
- <label>狀態:</label>
- </td>
- <td>
- <select name="state" class="combox">
- <option value="" <?php if( "" ===$state)echo 'selected'?>>全部</option>
- <option value="0" <?php if("0" === $state)echo 'selected'?>>未審核</option>
- <option value="1" <?php if("1" === $state)echo 'selected'?>>已審核</option>
- </select>
- </td>