PDO测试如果连接

Lan*_*Lan 2 php mysql connection pdo

我无法在任何地方找到答案.也许它非常简单

我有这样的mysql PDO连接:

try{
$DBH = new PDO("mysql:host=$db_hostname;dbname=$db_database", $db_username, $db_password);
$DBH->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );  
}
catch (PDOException $e){
echo $e->getMessage();
exit;
}
Run Code Online (Sandbox Code Playgroud)

我想测试连接是否有效,即.如果密码,用户名,数据库名称和主机名拼写正确.

尝试,抛出似乎只是拾取基本错误,如果驱动程序拼写错误.如果说密码错误,它不会引发错误.

谢谢

You*_*nse 13

只需单击一下这个问题,在PDO标签中wiki就是确切的方法:

$dsn = "mysql:host=localhost;dbname=test;charset=utf8";
$opt = array(
    PDO::ATTR_ERRMODE            => PDO::ERRMODE_EXCEPTION,
    PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC
);
$pdo = new PDO($dsn,'root','', $opt);
Run Code Online (Sandbox Code Playgroud)

以及警告

请勿使用try..catch运算符来处理错误消息.
未捕获的异常已经非常适用于此目的,因为它将像处理其他PHP错误一样处理PDO错误 - 因此,您可以使用站点范围的设置来定义行为.稍后可以添加自定义异常处理程序,但不是必需的.特别是对于新用户,建议使用未处理的异常,因为它们提供的信息非常丰富,有用且安全.更多信息...