【问题标题】:PDO fetch outputing bool(false)PDO 获取输出 bool(false)
【发布时间】:2018-07-16 17:34:21
【问题描述】:

当我从 PDO fetch 中获取数据库表时,它显示 bool(false)

try {
    $stmt = $db->prepare('SELECT * FROM replies WHERE comment_id = :comment_id');
    $stmt->execute(array(':comment_id' => $postcomment['id']));
    $repl = $stmt->fetch(); 
} catch (Exception $e) {
     echo 'Error: '.$e->getMessage();
}
var_dump($repl); ?>

【问题讨论】:

  • 仅仅因为选择查询成功并不意味着它返回行。如果没有任何行或您已到达结果集的末尾,Fetch 将返回 false。
  • print_r($db->errorInfo());$stmt 相同。

标签: php try-catch


【解决方案1】:

当查询失败时,您似乎期待异常。仅当您在 PDO 对象上设置适当的属性时才会发生这种情况(PDOStatementPDO,请参阅 PDO::setAttribute):

$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

设置后,所有 fetch 调用(和类似调用)都会在错误时抛出异常,而不是返回一些 false 返回值。那么,try-catch 块实际上提供了一些好处。

备注:setAttribute 的东西也可以在 PDO 构造函数中完成(参见PDO::__construct

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-10-05
    • 2017-12-07
    • 2016-08-31
    • 2012-10-20
    • 2014-05-29
    • 2018-09-14
    • 1970-01-01
    • 2021-02-28
    相关资源
    最近更新 更多