【发布时间】:2016-08-16 10:32:06
【问题描述】:
如果出现 MySQL 错误,例如重复条目,我想获取导致问题的字段的名称。我是这样做的:
$err = $mysqli->error;
$errno = $mysqli->errno;
...
if ($errno == 1062)
{
$begin = strpos($err, "' for key '") + 11;
$end = strlen($err) - 1;
$arg = substr($err, $begin, $end - $begin);
}
所以$arg 存储名称。不过,这并不是一种超级可靠的方法,因为据我所知,不能保证错误的格式在不同版本和数据库之间保持相同。
有没有更直接的方法来获取该字段的名称?
【问题讨论】:
-
这是个问题。我会使用存储整个错误消息或通过正则表达式获取值。您需要知道如何通过错误代码解析错误值。如果新版本的 sql 引擎可以更改错误,这是一个问题。如果你需要,我会让数组 errorCode => regex 如何获得某个值。
-
你为什么想要它?在精心设计的应用程序中,不需要名称。同一张表上不应该有很多唯一索引。
-
@YourCommonSense 假设我有一个学生表,例如,每个学生都有他们唯一的学生 ID、学校电子服务的用户名、电话号码、社会保险号和电子邮件
-
好吧,如果你想检查,那就先做一个选择。