我尝试在PDO中的连接上收到错误消息,但它返回
SQLSTATE[HY000] [1045] Access denied for user 'aa'@'localhost' (using password: YES)
。以及代码和SQLSTATE部分。有没有办法只获得Access denied for user 'aa'@'localhost' (using password: YES)
部分?
如何在[1045]之后提取部分,以便我只能打印错误部分或错误?我正在使用:
try {
$conn = new PDO('mysql:host='.$host.';dbname='.$dbname, $username, $password);
$conn->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING );
} catch(PDOException $e) {
var_dump($e->getMessage());
}
谢谢大家,我找到了答案
答案 0 :(得分:2)
使用errorinfo 试试:
$errorInfo= $db->errorInfo();
$msg= $errorInfo[2];
PDO :: errorInfo()返回有关此数据库句柄执行的上一个操作的错误信息数组。该数组包含以下字段:
元素信息 0 SQLSTATE错误代码(ANSI SQL标准中定义的五个字符的字母数字标识符)。 1特定于驱动程序的错误代码。 2特定于驱动程序的错误消息。
来源:
答案 1 :(得分:0)
我找到了答案
try {
$conn = new PDO('mysql:host='.$host.';dbname='.$dbname, $username, $password);
$conn->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING );
} catch(PDOException $e) {
if(strstr($e->getMessage(), 'SQLSTATE[')) {
preg_match('/SQLSTATE\[(\w+)\] \[(\w+)\] (.*)/', $e->getMessage(), $matches);
var_dump($matches);
}