首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 相關知識

CodeIgniter 框架進階教程(二):自定義 SQL、擴展控制器/模型、路由、分頁、文件上傳、Session

     編輯:PHP 相關知識

CI 框架核心功能深度實戰指南

自定義 SQL 查詢(Query Builder)

$res = $this->db->select('id,name')
    ->from('table_name')
    ->where('id >=', 5)  // 注意欄位名後需加空格
    ->limit(3, 2)        // CI 順序:limit($limit, $offset),與 SQL 相反
    ->order_by('id desc')
    ->get();

var_dump($res->result());
echo $this->db->last_query();  // 調試輸出最後執行的 SQL

擴展核心控制器 MY_Controller

文件:application/core/MY_Controller.php

<?php
class MY_Controller extends CI_Controller {
    public function __construct() {
        parent::__construct();  // 必須先調用父構造
        // 登錄驗證、權限檢查、公共數據加載...
    }
}

配置:application/config/config.php 設置 $config['subclass_prefix'] = 'MY_';

自定義模型

文件:application/models/User_model.php

class User_model extends CI_Model {
    public function getAll() {
        return $this->db->get('table_name')->result();
    }
}

控制器調用:

$this->load->model('User_model', 'user');  // 別名 user
$list = $this->user->getAll();
$this->load->view('user/index', ['list' => $list]);

URL 輔助函數與路由

$this->load->helper('url');  // 或配置自動加載 $autoload['helper'] = ['url'];

// 視圖中生成可擴展鏈接
<form action="<?= site_url('user/insert') ?>" method="post">

// 路由配置 application/config/routes.php
$route['rouxx/showxx/(:num).html'] = 'rou/show/$1';

分頁類完整用法

$config['total_rows'] = $allnum;      // 總記錄數
$config['per_page'] = 20;             // 每頁條數
$config['num_links'] = 3;             // 當前頁前後顯示頁碼數
$config['base_url'] = '/CI/index.php/page/pagelist';
$config['use_page_numbers'] = true;   // 使用實際頁碼而非偏移量

$this->load->library('pagination');
$this->pagination->initialize($config);

echo $this->pagination->create_links();  // 輸出分頁鏈接

// 控制器獲取當前頁
$page = $this->uri->segment(3) ?: 1;
$start = ($page - 1) * $perPage;
$list = $this->test_m->user_select_limit($start, $perPage);

文件上傳類

$config['upload_path'] = './uploads/';
$config['allowed_types'] = 'gif|jpg|png';
$config['max_size'] = 2000;  // KB
$config['max_width'] = 1024;
$config['max_height'] = 768;

$this->load->library('upload', $config);

if ($this->upload->do_upload('upfile')) {  // 表單 name='upfile'
    $data = ['upload_data' => $this->upload->data()];
} else {
    $error = ['error' => $this->upload->display_errors()];
}

Session 庫使用

$config['encryption_key'] = 'adb8bf6d0ac4e17b42a80941582497a4';  // 必須設置

$this->load->library('session');

// 寫入
$this->session->set_userdata(['id' => 3, 'name' => 'jack']);

// 讀取
$name = $this->session->userdata('name');

// 刪除
$this->session->unset_userdata('name');

// 閃數據(僅一次請求有效)
$this->session->set_flashdata('test', 'aaaaa');
$test = $this->session->flashdata('test');

Session 配置參數

$config['sess_cookie_name'] = 'ci_session';
$config['sess_expiration'] = 7200;
$config['sess_encrypt_cookie'] = TRUE;
$config['sess_use_database'] = FALSE;  // 改為 TRUE 需建表 ci_sessions
$config['sess_match_useragent'] = TRUE;
$config['sess_time_to_update'] = 300;
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved