gpt4 book ai didi

php - 如何优雅地显示数据库错误? (例如 SQLSTATE[23000] : . ..)

转载 作者:行者123 更新时间:2023-11-29 12:31:45 26 4
gpt4 key购买 nike

我在用户表列(电子邮件、用户名)上设置了两个唯一索引,但是当我尝试使用已获取的电子邮件和已获取的用户名注册新用户时,它会按预期显示异常。但是,它仅在电子邮件列上显示异常,而不是用户名:

SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry 'martynbissett@yahoo.co.uk' for key 'email_2'

在我的代码中,我尝试做这样的事情:

try {

// attempt to save

} catch(\Exception $e) {

switch($e->getCode()) {
case 23000:

$this->flash->error('Email(?) address already taken'); // or is it username?
break;

default:
$this->flash->error($e->getMessage());
}
}

此外,您可以看到我想提供比 SQLSTATE[23000]: Integrity const... 更好的错误消息,因此我正在捕获错误代码。但我不知道在任何给定情况下哪一列有问题(“电子邮件地址已被占用”或“用户名已被占用”?)

在验证期间,我是否需要对每个先前的查询执行单独的查询?如果我只有一个唯一索引(例如只有电子邮件),那么我可以只依赖异常中的代码,但如果我有两个......

最佳答案

只需在插入数据库之前进行验证。检查指定值是否存在的查询非常便宜,所以不要害怕。

数据库约束将是额外的保护。

关于php - 如何优雅地显示数据库错误? (例如 SQLSTATE[23000] : . ..),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27381619/

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