how to get column names in PDO error?
当我使用 PDO 时 errorInfo
我明白了:
但我只想得到列名 > \\’email\\’ 和 1062 来回显错误代码:
this email zzz@zzz.net already registered
因为我使用电子邮件或电话或用户名进行注册
- 你不应该使用错误来驱动你的代码。请改用验证。然后这个错误只会发生在非常罕见的竞争条件下,恕我直言只需要”请重试”消息。
我认为这样做的唯一方法是使用正则表达式。您可以使用 preg_replace_callback 来搜索和替换文本。
1
2 3 4 5 6 7 8 |
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 } |
- 好方法,但是所有 mysql 和 pdo 版本都会产生相同的错误文本?
- 我不知道。 $message 是特定于驱动程序的错误消息,所以我假设会有变化。
来源:https://www.codenong.com/37871180/