Codeigniter:如何处理数据库错误?
问题描述:
我正在使用codeigniter和postgresql创建一个Web应用程序。我有这个在我的数据库内:Codeigniter:如何处理数据库错误?
user
id name
unique(name)
当有人试图用相同的名称注册时,我得到一个错误。我如何处理它们,而不显示codeigniter的错误并显示我的自定义错误? 如果我设置$db['default']['db_debug'] = FALSE;
我当然没有得到任何错误,但有没有办法处理数据库错误,或者我应该检查自己,如果表中已经包含一个同名的条目?
答
我不知道用什么笨,但即时通讯将承担的工作原理相同:
你先进行查询像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.
}
答
使用Codeigniters表单验证类。 is_unique [table.columnName]。这将为你做这项工作。下面是
$this->form_validation->set_rules('name', 'Name', 'is_unique[table_name.Name]');
然后,只需设置一个自定义消息引用类似下面
$this->form_validation->set_message('is_unique', 'Name already exists');
感谢您的回答的Martijn的is_unique验证的例子,但我是问,如果有另一种方式来做到这一点或许真的建在内部codeigniter! – 2014-10-10 09:51:50