使用PDO连接在try-catch块中处理PHP数据库错误

时间:2016-03-30 01:35:39

标签: php mysql pdo exception-handling try-catch

我正在进行的练习涉及使用try-catch块在数据库行不存在时抛出异常。以下是read()函数的示例:

class Manager {
    private $desc;
    private $id;
    private $newDesc;
    public function read($id) {
        $db = new PDO('mysql:host=localhost; dbname=database', 'root', '');
        $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        try {
            $sql = "SELECT * FROM table where `id` = :id_val";
            $query = $db->prepare($sql);
            $query->bindParam(":id_val", $id);
            $query->execute();
            $results = $query->fetchAll(PDO::FETCH_ASSOC);
        } catch (Exception $e) {
            echo "Could not return specified row! <br />";
            echo $e->getMessage();
        }
        echo "<pre>";
        print_r($results);
        echo "</pre>";
   }
}

课外我跑:

$manager = new Manager();
$manager->read(44); // this is an id that IS NOT an existing record

我的浏览器显示Array()我是否将错误的陈述放入try-catch中,还是完全是其他内容?

1 个答案:

答案 0 :(得分:1)

这是正常行为,“try catch”语句捕获错误,异常......没有记录给定id不是错误。如果要检查是否有记录,可以使用

计算结果集
count($results);

如果此计数大于0,则表示存在。