CodeIgniter入门需掌握环境搭建、MVC闭环开发及数据库集成全流程:先配置兼容PHP版本并启动框架,再实现控制器调用视图、传值渲染,接着配置数据库连接与自动加载,最后完成新闻模块的增删改查功能。

CodeIgniter框架入门需要掌握从环境搭建到MVC各层协同工作的完整链路,而不是只看零散功能点。你得能独立创建一个带数据库读写的新闻列表页面,中间不卡壳、不查文档反复重试。
先跑通基础运行环境
第一步:下载最新稳定版CodeIgniter(推荐3.1.13或4.4.x LTS版本),解压后直接扔进Web服务器目录,比如/var/www/html/ci3或XAMPP/htdocs/ci4。
第二步:打开浏览器访问http://localhost/ci3/或对应路径,看到“Welcome to CodeIgniter”页面才算真正启动成功——如果报错500或空白页,【90%是PHP版本不兼容】:CI 3.x要求PHP 5.6–7.4,CI 4.x最低需PHP 7.4,别用PHP 8.3+跑CI 3。
第三步:修改application/config/config.php里的$config['base_url'],填入你实际访问的URL,末尾带斜杠,例如$config['base_url'] = 'http://localhost/ci3/';。这一步漏掉会导致CSS/JS加载失败、路由跳转异常。
理解并动手写第一个MVC闭环
方法一:静态页面输出(验证控制器与视图通信)
在application/controllers/下新建Home.php,内容如下:
<?php defined('BASEPATH') OR exit('No direct script access allowed');<br>class Home extends CI_Controller {<br> public function index() {<br> $this->load->view('home_view');<br> }<br>}
再在application/views/下建home_view.php,写一句<h1>Hello from CI!</h1>。访问http://localhost/ci3/index.php/home能看到标题,说明控制器→视图通路已打通。
方法二:动态数据注入(验证传值机制)
改写Home.php中的index()方法:
$data['title'] = '我的首条新闻';<br>$data['content'] = '这是正文内容,发布于'.date('Y-m-d');<br>$this->load->view('home_view', $data);
然后在home_view.php里用<h2><?= $title ?></h2><p><?= $content ?></p>输出——这步不做,后面所有带变量的页面都会变成白板。
配置并连接真实数据库
第一步:确认MySQL服务正在运行,创建一个名为ci_demo的数据库,字符集选utf8mb4,排序规则utf8mb4_unicode_ci。
第二步:编辑application/config/database.php,找到$db['default']数组,填入你的本地数据库凭证:
'hostname' => 'localhost',<br>'username' => 'root',<br>'password' => '',<br>'database' => 'ci_demo',<br>'dbdriver' => 'mysqli',<br>'char_set' => 'utf8mb4',<br>'dbcollat' => 'utf8mb4_unicode_ci'
第三步:启用数据库自动加载——打开application/config/autoload.php,把$autoload['libraries'] = array('database');这行取消注释。否则每次要用$this->load->database()手动加载,极易遗漏导致Call to a member function query() on null错误。
第四步:写个简单测试,在Home.php的index()方法开头加:$query = $this->db->query("SELECT VERSION() as ver"); echo $query->row()->ver;。页面顶部显示MySQL版本号,证明DB连通无误。
写出可增删改查的新闻模块
步骤一:在数据库中建表
CREATE TABLE `news` (<br> `id` int(11) NOT NULL AUTO_INCREMENT,<br> `title` varchar(128) NOT NULL,<br> `slug` varchar(128) UNIQUE NOT NULL,<br> `text` text NOT NULL,<br> PRIMARY KEY (`id`)<br>) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
步骤二:创建模型application/models/News_model.php
class News_model extends CI_Model {<br> public function __construct() {<br> parent::__construct();<br> }<br> public function get_news($slug = FALSE) {<br> if ($slug === FALSE) {<br> return $this->db->get('news')->result_array();<br> }<br> $query = $this->db->get_where('news', array('slug' => $slug));<br> return $query->row_array();<br> }<br>}
步骤三:改写控制器Home.php,引入模型并调用
$this->load->model('news_model');<br>$data['news'] = $this->news_model->get_news();<br>$this->load->view('news_list', $data);
步骤四:新建视图application/views/news_list.php,循环输出
<?php foreach ($news as $news_item): ?><br><h2><?= $news_item['title'] ?></h2><br><p><?= $news_item['text'] ?></p><br><hr><br><?php endforeach; ?>
访问http://localhost/ci3/index.php/home,看到数据库里的新闻标题和正文,整个MVC数据流就跑通了。


















