PHP MySQLi错误处理1062重复键输入
发布时间:2020-12-13 16:49:35 所属栏目:PHP教程 来源:网络整理
导读:如何优雅地捕获列名称发生了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-bi
如何优雅地捕获列名称发生了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错误,因此当电子邮件地址已存在时.我想检查是仅采用了用户名,还是仅检查了电子邮件地址,或者两者都是.再说一遍,我想以优雅的方式做到这一点,而不先选择电子邮件和用户名,并检查它们是否已经存在.如果可能的话,我想做一个插入查询并从中获取所有信息. 解决方法
MySQL以数字,状态和消息的形式返回错误.如果不解析消息,您将无法确定哪些列是重复的.
此外,MySQL将在第一次失败时轰炸.因此,如果您将user_name和e_mail作为重复项,则只会在消息中返回遇到的第一个重复项. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |