2

php PDO mysql ドライバーでの実行エラーからのフェッチ エラーまたは空の結果を認識するにはどうすればよいですか?

  $sql = ' SELECT * ';
  $sql .= ' FROM test ';
  $sql .= ' WHERE id = 432 ';

  $statement = $this->_db->prepare($sql);
  $status = $statement->execute();

  var_dump($status);

  $result = $statement->fetch(\PDO::FETCH_ASSOC);

  var_dump($result);

  output:
  bool(true)
  bool(false)

ということで、pdoで文を用意して、sqlを実行すると、エラーがないのでstatusがtrueになります。次に、結果をフェッチします。この特定のケースでは、id = 432 の行は存在しません。したがって、fetch メソッドは false を返します。私の問題は、エラーが発生した場合でも fetch メソッドが false を返すことです!.

fetch "false" の結果がエラーまたは空の結果であることを確認するにはどうすればよいですか?

4

1 に答える 1

0

エラーが発生した場合、PDO はキャッチできる例外をスローします。コードを try catch でラップすると、すべての例外がキャッチされます。

try {
    $rs = $db->prepare('SELECT * FROM foo');
    $rs->execute();
    $foo = $rs->fetchAll();
} catch (Exception $e) {
    echo 'Error: '.$e->getMessage();
}
于 2012-04-13T17:15:03.220 に答える