PDO连接尝试捕获包括


PDO connection try catch include

我是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 并在捕获异常时引发错误。我猜,如果没有数据库连接,您的网站将无法运行。
  • 对查询进行尝试/捕获,以从错误中优雅地恢复(如果可以)