Codeigniter:如何处理数据库错误?

时间:2014-10-10 09:34:29

标签: codeigniter debugging

我正在使用codeigniter和postgresql创建一个Web应用程序。我在我的数据库中有这个:

user
id name
unique(name)

当有人尝试使用相同名称注册时,我收到错误消息。如何处理它们,而不显示codeigniter的错误并显示我的自定义错误? 如果我设置$db['default']['db_debug'] = FALSE;我当然没有得到任何错误,但是有没有办法处理db错误,或者我应该检查自己表是否已经包含具有相同名称的条目?

3 个答案:

答案 0 :(得分:2)

使用Codeigniters表单验证类。 is_unique [table.columnName]。这将为您完成工作。以下是一个例子

$this->form_validation->set_rules('name', 'Name', 'is_unique[table_name.Name]');

然后只需设置引用is_unique验证的自定义消息,如下所示

$this->form_validation->set_message('is_unique', 'Name already exists');

答案 1 :(得分:0)

我不知道任何关于codeigniter的事情,但我会假设原理的工作方式相同:

首先进行SELECT id FROM tablename WHERE name='SomeName' LIMIT 1之类的查询,然后检查行数。这种检查很正常。尽可能多地控制(有意义)可以避免错误。

零行?安全插入。不是零行?显示“用户名已全部用完”等内容。

一些代码示例:

$check = mysqli_query("SELECT id FROM tablename WHERE name='SomeName' LIMIT 1");
if( $check->num_rows!==0 ){
    echo 'Username allready taken'; // echo is bad, you should process this better, but this is easy demo
}
else{
    // Your normal inserting code goes here.
}

答案 2 :(得分:0)

就像Martijn所说,这是一个解决方案。

CI不会抛出异常,因此当您执行查询时,如果语句失败,它将返回NULL。

您可能希望查看CodeIgniter - how to catch DB errors?