mysqli_sql_exception class定义 protected $sqlstate
属性,手册将其定义为“带错误的sql状态”。但是,似乎没有定义相应的getter方法,例如。 getSqlstate()
似乎不存在!?手册中没有记录任何内容。
您希望如何访问此属性?
答案 0 :(得分:2)
这里有几个可能(丑陋)的解决方法来阅读受保护的$sqlstate
属性。该属性似乎具有合法价值,因此这里似乎缺少一些东西!?
方法1 使用反射,目前尚未经过测试。
方法2 将对象强制转换为数组并读取受保护的属性(前缀为*
并用空字节包围!)
try {
/* Code throws mysqli_sql_exception */
} catch (mysqli_sql_exception $e) {
// 1. Reflection
// Requires PHP 5.3+ for the setAccessible() method
$reflect = new ReflectionClass($e);
$property = $reflect->getProperty('sqlstate');
$property->setAccessible(true); // PHP 5.3
$sqlstate = $property->getValue($e);
/* OR */
// 2. Cast to an array and access "protected" property
$eArr = (array)$e;
$sqlstate = $eArr["\0*\0sqlstate"];
}