如何在PDO中获取列名错误?

时间:2016-06-17 00:00:59

标签: php mysql pdo

当我使用PDO errorInfo

我明白了:

Array ( 
[0] => 23000
[1] => 1062
[2] => Duplicate entry 'zzz@zzz.net' for key 'email'
) 

但我只想获得专栏名称> 'email'和1062错误代码回显:

  

此电子邮件zzz@zzz.net已注册

因为我使用电子邮件或电话或用户名进行注册

1 个答案:

答案 0 :(得分:1)

认为这样做的唯一方法就是使用正则表达式。您可以使用preg_replace_callback来搜索和替换文字。

list(, $code, $message) = $dbh->errorInfo();
// check if duplicate error
if ($code === 1062) {
    echo preg_replace_callback("/^Duplicate entry '(.*)' for key '(.*)'$/", function ($m) {
       return sprintf("this %s %s already registered", $m[2], $m[1]);
    }, $message);
    // this email zzz@zzz.net already registered
}