首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >正确检查MySQLi OOP错误

正确检查MySQLi OOP错误
EN

Stack Overflow用户
提问于 2014-08-06 12:21:42
回答 2查看 52关注 0票数 1

我使用OO MySQLi来处理注册表单。我在表中创建了用户名列unique,并注意到如果给出重复的用户名,当代码尝试使用execute()方法时,$stmt会抛出一个错误。

我想知道如何在错误检测中区分其他错误和重复用户名错误?现在我基本上是这样做的:

代码语言:javascript
复制
$stmt->execute();
if($stmt->error)
    die();

问题是,如果execute()由于另一个原因(而不是重复的用户名)而失败,我很可能想要记录它,但是我不想每次用户尝试用一个被取的用户名注册时都记录它。我想出的最简单(也可能不是很好的)解决方案是分析$stmt->error消息。如果问题与重复用户名有关,则字符串将为"Duplicate entry 'value' for key 'column'",因此我只需检查字符串首字母是否为"Duplicate entry "。但我想这很容易出错。

有更好的建议吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-08-06 13:36:15

mysql_statement具有一个$sqlstate属性,其值为在MySQL手册中文档。

如果您处理异常,mysqli_sql_exception还具有两个额外的相关属性:

代码语言:javascript
复制
protected string $sqlstate ;
protected int $code ;

你想要检查一下error = 1062sqlstate = '23000'

票数 0
EN

Stack Overflow用户

发布于 2014-08-06 12:23:26

您可以在insert之前运行一条语句,以检查用户名是否已经存在于表中,如果它没有运行insert语句,则根据需要记录它/抛出错误。

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

https://stackoverflow.com/questions/25160267

复制
相关文章

相似问题

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