升级php mysql报错1062_PHP MySQLi错误处理1062重复键输入

如何优雅地捕获列名称发生了1062错误代码(重复键入口)?

当我做:

$db = @new mysqli('localhost', 'root', '******', 'database');

$pstmt = $db->prepare("INSERT INTO users (person_id, user_name, password, e_mail) VALUES (LAST_INSERT_ID(), ?, ?, ?)");

$pstmt->bind_param("sss", $_POST["register_user_name"], md5($_POST["register_password"]), $_POST["register_e_mail"]);

// error occurred

if (!$pstmt->execute()) {

if ($db->errno == 1062) {

$column_duplicate_key_entry = /*how to obtain the column name(s)?*/;

}

}

唯一列是user_name和e_mail

我知道我可以通过调用$db->错误并自己解析字段来获取错误字符串.但在我看来,这并不优雅.还有其他更好的解决方案吗?

我想要做的是尝试插入一个新用户.如果插入的用户名已存在,则抛出1062错误,因此当电子邮件地址已存在时.我想检查是仅采用了用户名,还是仅检查了电子邮件地址,或者两者都是.再说一遍,我想以优雅的方式做到这一点,而不先选择电子邮件和用户名,并检查它们是否已经存在.如果可能的话,我想做一个插入查询并从中获取所有信息.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值