我是PDO的新手,我想从一开始就这样做 - 我将替换站点上的旧mysql_功能。
我做对了吗?
我是否应该将连接代码放在 try/catch 中并将其保存到文件中,并将其包含在页面顶部。然后将查询也放在 try/catch 中。
或:
我是否应该将连接代码放在文件中,并将其包含在查询上方的 try/catch 语句顶部?
版本1:
include('pdo.php'); // try/catch in file
try {
$stmt = $conn->prepare('SELECT * FROM myTable WHERE id = :id');
$stmt->execute(array('id' => $id));
while($row = $stmt->fetch()) {
print_r($row);
}
} catch(PDOException $e) {
echo 'ERROR: ' . $e->getMessage();
}
版本2:
try {
include('pdo.php'); // no try/catch in file
$stmt = $conn->prepare('SELECT * FROM myTable WHERE id = :id');
$stmt->execute(array('id' => $id));
while($row = $stmt->fetch()) {
print_r($row);
}
} catch(PDOException $e) {
echo 'ERROR: ' . $e->getMessage();
}
还是我应该把尝试/捕获放在两个地方?
你应该同时做这两件事,甚至更多:
- 设置向用户显示消息并停止 PHP 的错误处理程序(请参阅
set_error_handler
) - 启动连接时,请添加 try/catch 并在捕获异常时引发错误。我猜,如果没有数据库连接,您的网站将无法运行。
- 对查询进行尝试/捕获,以从错误中优雅地恢复(如果可以)