如果我无法连接到数据库(例如xamp down或数据库连接等),我试图捕获错误。我曾尝试使用PDO::errorCode()
,但不会产生任何重复。
在我的php中,我有一个connection.php和一个方法'多次连接到datatbase并返回一个新的PDO实例来实现各种查询。响应显示错误消息,然后显示调用它的所有php查询,其中还包括非加密格式的数据库的名称和密码。
CONNECTION.PHP
function connect()
{
// set database server access variables:
$host = "localhost";
$user = "root";
$pass = "password";
$dbase = "dbName";
//Establish a connection
$db = new PDO("mysql:host=".$host."; dbname=".$dbase."", $user, $pass); //line 16
$db -> setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);
return $db;
}
RESPONSE
致命错误:带有消息的未捕获异常'PDOException' 'SQLSTATE [HY000] [2002]因为目标无法建立连接 机器主动拒绝了。 'in d:\ Users \用户名\ Dropbox的\网络\ htdocs中\站点名称\ PHP \ DATA \ connection.php:16 堆栈跟踪:#0 d:\ Users \用户名\收存箱\网络\ htdocs中\站点名\ PHP \数据\ connection.php(16): PDO-> __ construct('mysql:host = loca ...','root','password')#1 d:\ Users \用户名\收存箱\网络\ htdocs中\站点名\ PHP \功能\有源user.php的(28): connect()#2 d:\ Users \用户名\收存箱\网络\ htdocs中\站点名\地图floorplan.php(10): include('D:\ Users \ Username ...')#3 {main}引入 d:\ Users \用户名\ Dropbox的\网络\ htdocs中\站点名称\ PHP \ DATA \ connection.php 第16行
答案 0 :(得分:1)
执行try / catch以捕获异常
try{
$db = new PDO("mysql:host=".$host."; dbname=".$dbase."", $user, $pass); //line 16
$db -> setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);
return $db;
} catch( PDOException $e){
$originalError = $e->getMessage();
echo 'something went wrong.. '.$originalError;
exit;
}