如何使用MySQLi处理故障?

时间:2014-01-28 20:45:26

标签: php error-handling mysqli

我目前正在开发一个使用MySQLi进行数据库访问的网站。目前,执行数据库查询的代码如下所示:

$query = "SELECT height, color FROM llamas WHERE name = ?";
if(!$stmt = $connection->prepare($query)) {
   // Error handling here.
}
$stmt->bind_param("s", $name);
$stmt->execute();
$stmt->store_result();
$stmt->bind_result($height, $color);
$stmt->fetch();
$stmt->close();

大多数调用的返回值返回FALSE以指示问题。来自PHP文档:

  

成功时返回TRUE或失败时返回FALSE

如果我尝试检查所有这些函数调用是否为false,我会得到类似的结果:

$query = "SELECT height, color FROM llamas WHERE name = ?";
if(!$stmt = $connection->prepare($query)) {
   // Error handling here.
}
if(!$stmt->bind_param("s", $name)) {
    // Error handling here.
}
if(!$stmt->execute()) {
    // Error handling here.
}
if(!$stmt->store_result()) {
    // Error handling here.
}
if(!$stmt->bind_result($height, $color)) {
    // Error handling here.
}
if(!$stmt->fetch()) {
    // Error handling here.
}
if(!$stmt->close()) {
    // Error handling here.
}

我的问题是:我确实需要检查哪些函数调用才能检查FALSE的返回值?这样做是否有一种整洁的方式?

1 个答案:

答案 0 :(得分:0)

我会使用PDOtry - catch

try {
    // your code here                   
} catch(PDOException $e){
    error_log('ERROR: ' . $e->getMessage());
}

编辑:这是MySQLi版本

try {

} catch (mysqli_sql_exception $e) {

}