gpt4 book ai didi

database - codeigniter 数据库错误处理

转载 作者:搜寻专家 更新时间:2023-10-30 20:06:15 26 4
gpt4 key购买 nike

Controller :

function edit($id)
{
$this->form_validation->set_rules('name', 'Name', 'required|xss_clean');

$this->load->model('manager_model');

$pageData['type'] = 'managers';
$pageData['title'] = "Edit Manager";
$data['records'] = $this->manager_model->getManager($id);

$this->load->view('header', $pageData);
$this->load->view('db_options_view', $pageData);

if ($this->form_validation->run() == FALSE)
{
$this->load->view('managers/editManagerForm_view', $data);
}
else
{
$name = $this->input->post('name');

$this->manager_model->updateRecord($id, $name);

$this->load->view('managers/editManagerSuccess_view');
}

$this->load->view('footer');
}

型号:

function updateRecord($id, $name)
{
$data = array('name' => $name);
$this->db->where('id', $id);
$this->db->update('manager', $data);
}

我的问题是这样的。我的数据库表不接受名称字段的重复值。因此,当我测试它时,我输入了一个重复的名称,然后 codeigniter 返回了以下内容:

发生数据库错误错误号:1062 key 2 的重复条目“alan pardew”更新 经理 SET name = 'alan pardew' WHERE id = '2'文件名:/var/www/vhosts/mysite.com/httpdocs/personal/models/manager_model.php行号:74

我想在 Controller 中自己处理这个错误,我做了一些阅读,发现我必须设置 $db['default']['db_debug'] = FALSE; 以防止 codeigniter 显示错误。

有没有办法关闭特定错误,例如重复条目?

或者您会建议完全关闭它们吗?

另外..我对 codeigniter 还很陌生,所以如果您能在我的代码中发现任何不好的做法,请随时指出来!

最佳答案

如果您使用的是 MYSQL,您可以使用“INSERT IGNORE ...”(尝试插入,如果发生错误将其降级为警告,以便查询静默失败),“REPLACE INTO .. ."(插入,如果发生重复键错误,将旧记录替换为新记录)或"INSERT ... ON DUPLICATE KEY UPDATE ..."(插入,如果发生重复键错误,则取消插入并执行更新旧行上的声明)

例如:

INSERT INTO log(id_page, view_count) VALUES (123, 1) ON DUPLICATE KEY UPDATE view_count = view_count + 1

遗憾的是,据我所知,code igniter 的事件记录库不允许您使用它,因此处理它的最简单方法就是选择记录以查看它是否已存在,然后再插入它(或者您可以在没有事件记录的情况下自己执行查询并检查它是否返回错误代码)。

关于database - codeigniter 数据库错误处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6139886/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com