【发布时间】:2015-09-05 18:46:43
【问题描述】:
问题:
我已经阅读了很多关于 PDO 的文章和两本书,但我似乎没有找到我的问题的答案。问题是是否有办法将与 PDO 的数据库连接包含为 require_once() 并且仍然能够在没有 try/catch 块的情况下使用准备好的语句?
我目前有一个名为 settings.php 的文件,其中包含以下代码。
代码(settings.php):
<?php
// Declaration of database connection information
$settings = [
'host' => '127.0.0.1',
'name' => 'c9',
'port' => '3306',
'charset' => 'utf8',
'username' => 'admin',
'password' => 'root'
];
?>
我将此文件放在文档根目录之外,并使用 require_once() 将其包含到实际的数据库连接文件中。
代码(db.php):
<?php
// Includes database connection information
require_once('../settings.php');
// Connects to a MySQL database
try {
$dbh = new PDO(
sprintf(
'mysql:host=%s;dbname=%s;port=%s;charset=%s',
$settings['host'],
$settings['name'],
$settings['port'],
$settings['charset']
),
$settings['username'],
$settings['password']
);
// Prevents PDO to use emulated prepares and activates error
// mode PDO::ERRMODE_EXCEPTION
$dbh->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}
// Catches errors raised by PDO
catch (PDOException $e) {
// Prints out errors to text file
file_put_contents('errors.txt', $e->getMessage(), FILE_APPEND);
// Shows generic error message to user
header('Location: 404.php');
exit;
}
?>
问题:
由于我有文件db.php,是否可以将其包含在其他文件中以用于准备好的语句?尽管连接是一体的,但准备好的语句也可以在 try/catch 块中吗?了解如何将 SELECT / INSERT / UPDATE / DELETE 包含到上述代码中。
【问题讨论】: