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. 新增数据

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注入攻击。

$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<
