【发布时间】:2016-07-17 19:46:34
【问题描述】:
我正在做一个练习,如果数据库行不存在,则使用 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 中放置了错误的语句,还是完全是别的东西?
【问题讨论】:
-
有空结果集不会被抓到,单独处理
-
"数据库行不存在时的异常" -- 您必须自己抛出异常,因为默认情况下不会抛出异常。
标签: php mysql pdo exception-handling try-catch