首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >代码点火器:如何处理数据库错误?

代码点火器:如何处理数据库错误?
EN

Stack Overflow用户
提问于 2014-10-10 09:34:28
回答 3查看 4.5K关注 0票数 0

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

代码语言:javascript
代码运行次数:0
运行
复制
user
id name
unique(name)

当有人试图用相同的名字注册时,我会得到一个错误。我如何处理它们,而不显示代码点火器的错误和显示我的自定义错误?如果我设置了$db['default']['db_debug'] = FALSE;,我当然不会得到任何错误,但是是否有一种方法来处理db错误,或者我是否应该检查一下表中是否已经包含了一个具有相同名称的条目?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-10-10 09:50:09

我不知道任何代码点火器,但我会假设这个原则是一样的:

首先进行类似于SELECT id FROM tablename WHERE name='SomeName' LIMIT 1的查询,然后检查行数。这种检查是相当正常的。尽你所能(理智地)控制,以避免今后的错误。

零排?插入安全。不是零排?显示类似于“用户名已取”之类的内容。

使用一些代码的示例:

代码语言:javascript
代码运行次数:0
运行
复制
$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.
}
票数 0
EN

Stack Overflow用户

发布于 2015-05-05 16:12:56

使用Codeigniters表单验证类。is_uniquetable.columnName。这将为你做这件事。下面是一个例子

代码语言:javascript
代码运行次数:0
运行
复制
$this->form_validation->set_rules('name', 'Name', 'is_unique[table_name.Name]');

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

代码语言:javascript
代码运行次数:0
运行
复制
$this->form_validation->set_message('is_unique', 'Name already exists');
票数 2
EN

Stack Overflow用户

发布于 2014-10-10 10:46:32

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

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

你可能想看CodeIgniter - how to catch DB errors?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26297374

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档