日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

CodeIgniter学习笔记一:基本结构、控制器、视图、超级对象、数据库

發(fā)布時間:2025/1/21 数据库 65 豆豆
生活随笔 收集整理的這篇文章主要介紹了 CodeIgniter学习笔记一:基本结构、控制器、视图、超级对象、数据库 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

一、基本結(jié)構(gòu)

CodeIgniter3.0.0解壓后有8個文件,分別是:

  • application:項目文件
  • system:系統(tǒng)(框架)文件,為方便升級,不建議修改
  • user_guid:用戶手冊,不需要加入項目
  • composer.json:composer配置文件,不需要加入項目
  • contributing.md:如何參與項目貢獻(xiàn)代碼,不需要加入項目
  • index.php:項目入口文件
  • license.txt:許可文件,不需要加入項目
  • readme.rst:說明文件,不需要加入項目

二、控制器Controller

控制器在application文件夾中的controllers文件夾中,默認(rèn)控制器為welcome,有4小點需要注意:

1、控制器類名不需要加后綴

2、控制器文件名建議小寫

3、控制器要直接或間接繼承自CI_Controller類

4、可訪問的action方法名不能以下劃線開頭,且訪問權(quán)限要是public的

三、視圖View

視圖在application文件夾中的views文件夾中,幾個tips:

1、在控制器中用如下代碼加載views中的視圖:

//加載views文件夾中的user_index.php視圖文件 $this -> load -> view('user_index');//加載views/user文件夾中的index.php視圖文件 $this -> load -> view('user/index');

2、在視圖中,可以直接使用原生的php代碼

3、在控制器中可以通過以下方式向視圖中輸出變量:

<?phpclass User extends CI_Controller {public function index() {$data = array('username' => 'jim','books' => array('a', 'b', 'c', 'd'));$head = array('title' => 'TITLE','subtitle' => 'SUB TITLE');$this -> load -> vars('data', $data);//公共部分$this -> load -> view('header');$this -> load -> view('user/index', $head);}} ?>

在視圖中用如下方式獲取變量:

<!DOCTYPE html> <html> <head><title>User</title> </head> <body><h1>User</h1><?php var_dump($data); ?><?php var_dump($title); ?> </body> </html>

四、CI的超級對象

CI中的超級對象即為當(dāng)前的控制器對象。在視圖中也可以直接使用$this訪問超級對象。

超級對象提供了很多屬性:

1、$this -> load ,裝載器,主要提供了如下方法:

  • view:裝載視圖
  • vars:分配變量到視圖
  • database:裝載數(shù)據(jù)庫操作對象
  • model:裝載模型
  • helper:加載幫助文件

2、$this -> uri,解析URL相關(guān)內(nèi)容,主要提供如下方法:

  segment:按索引(控制器為1)獲取分段url值(類pathinfo沒有key的模式:入口.php/控制器/動作/參數(shù)1/參數(shù)2。。。),示例如下

  • <?phpclass User extends CI_Controller {///index.php/user/index/id/abc/name/godpublic function index($param1, $param2) {$param3 = $this -> uri -> segment(5);var_dump(array('param1' => $param1,'param2' => $param2,'param3' => $param3));/*array (size=3)'param1' => string 'id' (length=2)'param2' => string 'abc' (length=3)'param3' => string 'name' (length=4)*/$this -> load -> view('user/index');}} ?>

3、$this -> input,主要用于取post和server數(shù)據(jù),使用方法如下:

<?phpclass User extends CI_Controller {public function index() {$username = $this -> input -> post('username');$ip = $this -> input -> server('REMOTE_ADDR');echo $ip;//127.0.0.1$this -> load -> view('user/index');}} ?>

五、數(shù)據(jù)庫操作

數(shù)據(jù)配置文件在 application/config/database.php 中。

1、查詢示例

<?phpclass User extends CI_Controller {public function index() {$this -> load -> view('user/index');}public function showusers() {$this -> load -> database();$sql = 'select * from ci_test';$res = $this -> db -> query($sql);$users = $res -> result();var_dump($users);/*array (size=1)0 =>object(stdClass)[18]public 'id' => string '1' (length=1)public 'name' => string 'jim' (length=5)public 'title' => string 'ci learn' (length=8)*/$users2 = $res -> result_array();/*array (size=1)0 =>array (size=3)'id' => string '1' (length=1)'name' => string 'atwal' (length=5)'title' => string 'ci learn' (length=8)*/var_dump($users2);$firstUser = $res -> row();var_dump($firstUser);/*object(stdClass)[18]public 'id' => string '1' (length=1)public 'name' => string 'atwal' (length=5)public 'title' => string 'ci learn' (length=8)*/$this -> load -> view('user/show');}} ?>

要先調(diào)用 $this -> load -> database()進(jìn)行裝載數(shù)據(jù)庫,然后才能使用 $this -> db 對象。

2、插入示例

?

public function add() {$this -> load -> database();$sql = "insert into swap_test(name,title) values ('jim', 'jim learn ci')";$bool = $this -> db -> query($sql);if ($bool) {//受影響行數(shù)echo $this -> db -> affected_rows();//自增idecho $this -> db -> insert_id();} }

?

3、參數(shù)綁定示例

為了安全,阻止SQL注入,建議用參數(shù)綁定的形式操作數(shù)據(jù)庫。

public function addsafe() {//配置自動加載db//application\config\autoload.php//$autoload['libraries'] = array('database');//$this -> load -> database();$data[0] = 'lili';$data[1] = 'lili';$sql = "insert into swap_test(name,title) values (?,?)";$bool = $this -> db -> query($sql, $data);if ($bool) {//受影響行數(shù)echo $this -> db -> affected_rows();//自增idecho $this -> db -> insert_id();} }

4、表前綴

為了應(yīng)對數(shù)據(jù)庫表前綴變化,CI數(shù)據(jù)庫配置(application\config\database.php)中有下面兩項:

$db['default'] = array('dbprefix' => 'ci_','swap_pre' => 'swap_', );

swap_pre的作用是,在代碼中用swap_pre來替換dbprefix,可以達(dá)到換數(shù)據(jù)庫表前綴不改代碼的目地(即在代碼中表前綴用swap_pre值就好)。

5、自動加載db對象

在每次數(shù)據(jù)庫操作前都要加載database才可以使用db對象,顯得比較麻煩,可以用CI中的自動加載能力簡化這一步:

//配置自動加載db //application\config\autoload.php //$autoload['libraries'] = array('database');

配置完后,就可以直接使用$this -> db 對象了。

?

轉(zhuǎn)載于:https://www.cnblogs.com/lurenjiashuo/p/ci-note-basic-1.html

總結(jié)

以上是生活随笔為你收集整理的CodeIgniter学习笔记一:基本结构、控制器、视图、超级对象、数据库的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。