他们在php中返回PDO :: errorCode(void)的值中告诉哪个类?

时间:2018-01-25 19:51:48

标签: php mysqli pdo

我们知道 PDO :: errorCode(void)方法返回SQLSTATE,其中返回值是5个字符的字母数字标识符,其中前两个字符是类的值,其余三个字符是 SubClass 的值。我的问题是关于 Class & SubClass 他们在说什么?它是PDO类还是其他任何东西?

参考链接:PDO->errorCode(void)

任何人都可以告诉我吗?

谢谢!!!

1 个答案:

答案 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"   
]