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‘=>‘[email protected]‘), 6 array(‘id‘=>2,‘name‘=>‘mw2‘,‘email‘=>‘[email protected]‘), 7 array(‘id‘=>3,‘name‘=>‘mw3‘,‘email‘=>‘[email protected]‘) 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_Model 2 { 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(表名);
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。