我们知道 PDO :: errorCode(void)方法返回SQLSTATE,其中返回值是5个字符的字母数字标识符,其中前两个字符是类的值,其余三个字符是 SubClass 的值。我的问题是关于 Class & SubClass 他们在说什么?它是PDO类还是其他任何东西?
参考链接:PDO->errorCode(void)
任何人都可以告诉我吗?
谢谢!!!
答案 0 :(得分:1)
此类和子类与PDO或PHP类或面向对象无关。它只是指在SQL中对错误进行分类的方式。正如文档中所述,错误代码是
ANSI SQL-92标准中定义的五个字符的字母数字标识符。简而言之,SQLSTATE由两个字符的类值组成,后跟三个字符的子类值。
...
类值01
表示警告
...... <除01
之外的类IM
以外的类值表示错误。类IM
特定于源自PDO实现的警告和错误
除了类IM
之外,这些代码来自数据库。如果您使用命令行工具查询数据库并获得错误,它们就会显示相同的代码,例如
mysql> select a from foo bar baz;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'baz' at line 1
42000
是错误代码,其类为42
,子类为000
。如果您使用PDO进行相同的查询,$pdo->errorCode()
将返回"42000"
,$pdo->errorInfo
将返回如下数组:
[ "42000",
1004,
"You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'baz' at line 1"
]