首页 > 代码库 > CodeIgniter框架——访问方式 URI 分配变量 数据库操作

CodeIgniter框架——访问方式 URI 分配变量 数据库操作

 

1、访问方式:

CodeIgniter 的访问URL使用的是pathinfo,入口文件/控制器/方法(/参数列表)

eg:localhost/index.php/welcome/index/id

第一段表示调用控制器类。第二段表示调用类中的函数或方法。第三及更多的段表示的是传递给控制器的参数,如 ID 或其它各种变量。

 

2、URI参数获取:

控制器端代码

1 public function getUri($id,$name,$year)2         {3             echo "id--->".$id."---name--->".$name."---year--->".$year."<br />";4             echo "segment(1)--->".$this->uri->segment(1)."<br />";5             echo "segment(2)--->".$this->uri->segment(2)."<br />";6             echo "segment(3)--->".$this->uri->segment(3)."<br />";7             echo "segment(4)--->".$this->uri->segment(4)."<br />";8             echo "segment(5)--->".$this->uri->segment(5)."<br />";9         }

运行效果

 

3、分配变量

把数据从控制器传到视图中

控制器端代码

 1 public function addView() 2         { 3             $this->load->vars("title","value"); 4             $list = array( 5             array(‘id‘=>1,‘name‘=>‘mw‘,‘email‘=>‘123@123.com‘), 6             array(‘id‘=>2,‘name‘=>‘mw2‘,‘email‘=>‘1233@123.com‘), 7             array(‘id‘=>3,‘name‘=>‘mw3‘,‘email‘=>‘12333@123.com‘) 8             ); 9             $data[‘new_title‘]="test_title";10             $data[‘list‘]=$list;11             $this->load->vars($data);12             13             $this->load->view("view_test");14         }

视图端代码

 1 <html> 2     <head> 3     </head> 4     <body> 5         <h1><?php echo $title;?></h1> 6     title is <?php echo $title;?> 7       8         <h1><?php echo $new_title;?></h1> 9     new_title is <?php echo $new_title;?>10     11         <h1>test_ci:the data from controller to view</h1>12         <table>13             <?php foreach($list as $item):?>14             <tr>15                 <td><?=$item[‘id‘]?></td>    16                 <td><?=$item[‘name‘]?></td>17                 <td><?=$item[‘email‘]?></td>                18             </tr>19             <?php endforeach;?>20         </table>21     </body>22 </html>

运行效果

 

4、加载数据库:

此类操作放在MVC中的Model中,必须继承数据核心类CI_Model,同时重载父类的构造方法。

1 class Model_name extends CI_Model2 {3     function __construct()4     {5         parent::__construct();6     }7 }

在每次使用数据库的时候,都需要加载一次数据库:

1 $this->load->database();

为了方便,可以将数据库的加载设置成自动加载,在\application\config\autoload.php中。

1 $autoload[‘libraries‘] = array(‘database‘);

对于数据库访问对象,装载到超级对象的属性中 $this->db

1 $res = $this->db->query($sql);//返回对象2 $res->result();//返回数组,数组中是一个一个的对象3 $res->result_array();//返回二维数组,里面是关联数组4 $res->row();//返回第一条数据,直接是一个对象

AR操作数据库,在database.php文件中,将$active_recoed的值改为TRUE,这样就可以使用AR了。

1 //查询2 public function index()3 {4     $res = $this->db->get(‘表名‘);//这里自动调用前缀5     foreach($res->result() as $item)6     {7         echo $item->name."<br />";8     }9 }
 1 //插入 2 public function index() 3 { 4     $data=array( 5         ‘name‘=>‘lisi‘, 6         ‘password‘=>md5(‘lisi‘) 7     ); 8     $bool = $this->db->insert("表名",$data); 9     var_dump($bool);10 }
 1 //更新 2 public function index() 3 { 4     $data=array( 5         ‘name‘=>‘wangwu‘, 6         ‘password‘=>md5(‘wangwu‘) 7     ); 8  9     $bool = $this->db->update(‘表名‘,$data,array(‘id‘=>3));10     var_dump($bool);11 }
1 //删除2 $bool = $this->db->delete(‘表名‘,array(‘id‘=>2));3 var_dump($bool);

 总结为:

(1)连接数据库:$this->load->database();   注:将其写在模型的构造函数里,这样就在加载模型的同时连接了数据库(2)插入数据: $this->database->insert($t_name,$data);              $t_name:需操作的表              $data:需插入的数据(键名=字段名,键值=字段值,自增主键可不写)(3)更新数据: $this->db->where(字段名,字段值);              $this->db->update(表名,修改值的数组);(4)查询数据: $this->db->where(字段名,字段值);              $this->db->select(字段);              $query=$this->db->get(表名);              return $query->result();(5)删除数据: $this->db->where(字段名,字段值);              $this->db->delete(表名);