Теперь я поместил try-catch в файл настроек соединения и включил этот файл в другие функциональные файлы. Он работает неправильно.
Скажем, скрипт подключения к базе данных под названием db-connect.php.
Код: Выделить всё
try {
$db = new PDO('dsn', 'username', 'password');
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$db->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
} catch(PDOException $ex) {
echo ('An internal error happens. The technical staff has been informed to '.
'fix this. Sorry for any inconvenience.');
errorReport(/*title=*/"Database connection failed",
/*code=*/$ex->getCode(), /*message=*/$ex->getMessage(),
/*trace=*/$ex->getTraceAsString(), /*file=*/$ex->getFile(),
/*line=*/$ex->getLine());
}
Код: Выделить всё
require_once("db-connect.php");
$stmt = $db->prepare("SELECT * FROM user WHERE username=:username");
$stmt->excute(array(':username' => $uname));
Код: Выделить всё
An internal error happens. The technical staff has been informed to fix this. Sorry for any inconvenience.
Notice: Undefined variable: db in a.php on line 26
Fatal error: Call to a member function prepare() on null in a.php on line 26