因此,我正在为我的网络应用程序设置一个安装程序,并具有数据库凭据的输入字段。我的验证过程的一部分包括测试数据库连接(使用 PHP 的 PDO 库)。如果连接失败,我希望能够区分错误的密码、错误的地址、不存在的数据库名称等,以便我可以引用表单上正确的输入字段。
任何人都可以向我指出一个参考资料,其中概述了随 PDOException 返回的可能的错误代码/消息吗?
Edit:我发现这些错误代码/消息可能是特定于数据库的,并且本机数据库代码/错误可能只是被传递。如果是这种情况,我目前只使用 MySQL 5 数据库。
MySQL 文档是完整的参考错误代码 https://dev.mysql.com/doc/refman/8.0/en/error-handling.html.
从 1000 开始的错误代码是服务器错误 https://dev.mysql.com/doc/refman/8.0/en/server-error-reference.html。其中包括以下错误:
从 2000 开始的错误代码是客户端错误 https://dev.mysql.com/doc/refman/8.0/en/client-error-reference.html。其中包括以下错误:
我不会列出所有可能的错误,因为它们已经记录在案,而且我不知道您需要处理哪些错误。例如,错误 2001 和 2002 特定于 UNIX 套接字连接,这可能与您的目标平台无关。
不要忘记使用PDO::errorCode() http://php.net/manual/en/pdo.errorcode.php and PDO::errorInfo() http://php.net/manual/en/pdo.errorinfo.php而不是简单地PDOException
信息。
回复您的评论getCode()
-- 不,似乎不支持这种方式。我做了一个快速测试var_dump()
a PDOException
。不幸的是,尽管错误代码和 SQLSTATE 包含在异常消息中,但它的代码只是简单的“0”。
异常::getCode() http://php.net/manual/en/exception.getcode.php是基地的一部分Exception
类,从 PHP 版本 5.1.0 开始。由相应的 PDO 驱动程序实现来利用该对象字段。至少对于 MySQL 驱动程序来说,他们显然没有。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)