如何高效地使用CI框架进行数据库的增删改查操作?

CI框架中数据库操作包括增(INSERT)、删(DELETE)、改(UPDATE)和查(SELECT)。使用Active Record类简化SQL语句,通过$this->db->query()执行查询,$this->db->insert()、$this->db->update()和$this->db->delete()实现增删改。

CI框架数据库增删改查

如何高效地使用CI框架进行数据库的增删改查操作?

CI框架(CodeIgniter)是一个轻量级的PHP开发框架,它提供了一套丰富的工具来简化Web应用的构建过程,包括数据库操作,本文将详细介绍如何在CI框架中进行数据库的增删改查操作。

一、数据库配置

在开始使用CI框架进行数据库操作之前,首先需要配置数据库连接信息,这通常在application/config/database.php文件中进行,以下是一个简单的配置示例:

$db['default'] = array(
    'dsn'   => '',
    'hostname' => 'localhost',
    'username' => 'root',
    'password' => 'your_password',
    'database' => 'your_database',
    'dbdriver' => 'mysqli',
    'dbprefix' => '',
    'pconnect' => FALSE,
    'db_debug' => TRUE,
    'cache_on' => FALSE,
    'cachedir' => '',
    'char_set' => 'utf8',
    'dbcollat' => 'utf8_general_ci',
    'swap_pre' => '',
    'encrypt' => FALSE,
    'compress' => FALSE,
    'stricton' => FALSE,
    'failover' => array(),
    'save_queries' => TRUE
);

二、控制器实现

在CI框架中,数据库操作通常通过Model层来完成,而Controller层则负责调度和处理用户请求,以下是一个简单的控制器示例,展示了如何在CI框架中进行增删改查操作。

1. 查询数据

function index() {
    $this->load->model('MQuery'); // 加载模型
    $result = $this->MQuery->queryList(); // 调用模型方法获取数据
    $this->smarty->assign('res', $result); // 将结果集赋给模板变量
    $this->smarty->view('train/vquery.tpl'); // 跳转到显示页面
}

2. 新增数据

如何高效地使用CI框架进行数据库的增删改查操作?

function addPage() {
    $this->smarty->view('train/addPage.tpl'); // 加载新增页面模板
}
function add() {
    $memberName = $this->input->post('memberName');
    $password = $this->input->post('password');
    $userRealName = $this->input->post('userRealName');
    $sex = $this->input->post('sex');
    $bornDay = $this->input->post('bornDay');
    $eMail = $this->input->post('eMail');
    $question = $this->input->post('question');
    $answer = $this->input->post('answer');
    $this->load->model('MQuery'); // 加载模型
    $result = $this->MQuery->addRecord($memberName, $password, $userRealName, $sex, $bornDay, $eMail, $question, $answer); // 调用模型方法插入数据
    if ($result) {
        $this->index(); // 如果插入成功,跳转到索引页
    } else {
        echo "add failed."; // 如果插入失败,输出错误信息
    }
}

3. 删除数据

function deletePage() {
    $deleteID = $this->uri->segment(4); // 获取要删除的记录ID
    $this->load->model('MQuery'); // 加载模型
    $result = $this->MQuery->delRecord($deleteID); // 调用模型方法删除数据
    if ($result) {
        $this->index(); // 如果删除成功,跳转到索引页
    } else {
        echo "delect failed."; // 如果删除失败,输出错误信息
    }
}

4. 修改数据

function changePage() {
    $changeID = $this->uri->segment(4); // 获取要修改的记录ID
    $this->load->model('MQuery'); // 加载模型
    $result = $this->MQuery->changeRecord($changeID); // 调用模型方法查询数据并赋值给模板变量
    $this->smarty->assign('res', $result); // 将结果集赋给模板变量
    $this->smarty->view('train/changePage.tpl'); // 跳转到修改页面模板
}
function change() {
    $ID = $this->input->post('id'); // 获取前台提交的数据ID
    $memberName = $this->input->post('memberName'); // 其他字段同理...
    $password = $this->input->post('password');
    $userRealName = $this->input->post('userRealName');
    $sex = $this->input->post('sex');
    $bornDay = $this->input->post('bornDay');
    $eMail = $this->input->post('eMail');
    $question = $this->input->post('question');
    $answer = $this->input->post('answer');
    $this->load->model('MQuery'); // 加载模型
    $result = $this->MQuery->change($ID, $memberName, $password, $userRealName, $sex, $bornDay, $eMail, $question, $answer); // 调用模型方法更新数据
    if ($result) {
        $this->index(); // 如果更新成功,跳转到索引页
    } else {
        echo "change failed."; // 如果更新失败,输出错误信息
    }
}

三、模型实现

在CI框架中,模型通常负责与数据库交互,以下是一个简单的模型示例,展示了如何实现增删改查操作。

class MQuery extends Model {
    function MQuery() {
        parent::Model(); // 调用父类构造函数
        $this->load->database(); // 加载数据库库
    }
    function queryList() {
        $query = $this->db->get('users'); // 从users表中查询数据
        return $query->result(); // 返回查询结果集
    }
    function addRecord($memberName, $password, $userRealName, $sex, $bornDay, $eMail, $question, $answer) {
        $data = array(
            'username' => $memberName,
            'password' => $password,
            'real_name' => $userRealName,
            'gender' => $sex,
            'birthday' => $bornDay,
            'email' => $eMail,
            'question' => $question,
            'answer' => $answer
        );
        return $this->db->insert('users', $data); // 插入数据并返回插入ID或FALSE
    }
    function delRecord($deleteID) {
        $this->db->where('id', $deleteID); // 设置WHERE条件
        return $this->db->delete('users'); // 删除数据并返回删除状态或FALSE
    }
    function changeRecord($changeID) {
        $this->db->where('id', $changeID); // 设置WHERE条件
        $query = $this->db->get('users'); // 查询数据
        return $query->row(); // 返回单条记录结果或FALSE
    }
    function change($ID, $memberName, $password, $userRealName, $sex, $bornDay, $eMail, $question, $answer) {
        $data = array(
            'username' => $memberName,
            'password' => $password,
            'real_name' => $userRealName,
            'gender' => $sex,
            'birthday' => $bornDay,
            'email' => $eMail,
            'question' => $question,
            'answer' => $answer
        );
        $this->db->where('id', $ID); // 设置WHERE条件为要更新的记录ID
        return $this->db->update('users', $data); // 更新数据并返回更新状态或FALSE
    }
}

四、相关问题与解答栏目

问题1:如何在CI框架中防止SQL注入攻击?

答案:在CI框架中,可以通过使用查询绑定(Query Bindings)来防止SQL注入攻击,查询绑定允许你使用问号(?)作为占位符,然后在运行时将实际的值传递给查询,这样,数据库驱动程序会自动转义这些值,从而防止SQL注入攻击。

如何高效地使用CI框架进行数据库的增删改查操作?

$sql = 'SELECT * FROM users WHERE id = ? AND status = ?';
$binds = array($id, $status);
$this->db->query($sql, $binds);

还可以使用Active Record类的escape()方法对手动构建的查询字符串进行转义。

$username = $this->db->escape($username);
$password = $this->db->escape($password);
$this->db->query("SELECT * FROM users WHERE username = '{$username}' AND password = '{$password}'");

到此,以上就是小编对于“CI框架数据库增删改查”的问题就介绍到这了,希望介绍的几点解答对大家有用,有任何问题和不懂的,欢迎各位朋友在评论区讨论,给我留言。

文章来源网络,作者:运维,如若转载,请注明出处:https://shuyeidc.com/wp/44151.html<

(0)
运维的头像运维
上一篇2025-01-02 01:39
下一篇 2025-01-02 01:54

相关推荐

  • MySQL命令集有哪些常用命令?

    MySQL命令集是数据库管理和操作的核心工具,涵盖了从数据库创建、表管理到数据查询、用户权限控制等全方位功能,掌握这些命令能有效提升数据库操作效率,以下从数据库操作、表管理、数据操作、用户权限四个维度展开说明,在数据库操作层面,基础命令包括创建、查看、删除和切换数据库,创建数据库使用CREATE DATABAS……

    2025-11-17
    0
  • Foxpro常用命令有哪些核心功能?

    FoxPro 作为一种经典的数据库管理系统,其命令体系简洁高效,至今仍被一些 legacy 系统维护人员使用,掌握常用命令是高效操作 FoxPro 的基础,以下从数据操作、表管理、查询统计、程序控制等方面详细介绍,在数据操作方面,最常用的命令是 USE 和 APPEND,USE 用于打开或关闭表,USE stu……

    2025-11-14
    0
  • FoxPro命令有哪些常用且实用详解?

    FoxPro作为一款经典的数据库管理系统,其命令集是数据处理的核心工具,掌握这些命令的语法、功能及使用场景,能显著提升数据库操作效率,以下从数据定义、操作、查询及控制流程等维度,对常用命令进行详解,数据定义与操作命令表结构操作CREATE TABLE <表名> (<字段名1> <类……

    2025-10-28
    0
  • MySQL常用命令有哪些?

    MySQL作为最受欢迎的开源关系型数据库管理系统之一,其常用命令是数据库管理和开发的基础,掌握这些命令能够高效地进行数据库操作、数据管理和系统维护,以下从数据库连接、数据操作、表管理、用户权限和系统维护五个维度,详细梳理MySQL常用命令集,数据库连接与退出连接MySQL服务器需使用mysql命令,可通过-u指……

    2025-10-23
    0
  • MySQL常见命令有哪些?

    MySQL 是一款广泛使用的开源关系型数据库管理系统,掌握其常见命令是进行数据库操作的基础,以下将详细介绍 MySQL 的常用命令,涵盖登录、数据库操作、表操作、数据操作、用户权限管理等方面,登录 MySQL 数据库是使用 MySQL 的第一步,通常通过 mysql -u 用户名 -p 命令实现,mysql……

    2025-10-20
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注