如何获取 MySQL 错误参数?

Posted

技术标签:

【中文标题】如何获取 MySQL 错误参数?【英文标题】:How to get MySQL error parameters? 【发布时间】: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、学校电子服务的用户名、电话号码、社会保险号和电子邮件 好吧,如果你想检查,那就先做一个选择。 类似问题:***.com/questions/20727269/… 【参考方案1】:

您将执行如下的嵌套 CASE 语句。结果将返回具有重复条目的字段。如果超过 1 个重复条目,它将为每个条目做出响应。

   SELECT PD.column_name1, PD.column_name2, PD.column_name3 FROM table_name WHERE PD.column_name1 = value1, PD.column_name2 = value2, PD.column_name3 = value3 AS PD (SELECT CASE
      WHEN PD.column_name1 = value1 THEN "column_name1" 
      WHEN PD.column_name2 = value2 THEN "column_name2" 
      WHEN PD.column_name3 = value3 THEN "column_name3")

【讨论】:

以上是关于如何获取 MySQL 错误参数?的主要内容,如果未能解决你的问题,请参考以下文章

如何解决 Kettle 中的这个 in/out mysql 参数错误?

如何获取java泛型的参数类型

如何在 Bash 中获取带有标志的参数

如何在 Google App Script 中使用参数调用 MySQL 存储过程?

如何使用 Laravel 和 MySQL 获取大量记录?

Java如何获取方法参数中的名称