Veritabanındaki Tablonun Varlığını Kontrol Etmek

PHP’de PDO ile çalışırken bir tablonun var olup olmadığını kontrol etmek için aşağıdaki yöntem kullanılabilir:

public function checkTable()
{
  try {
    return $this->fetchRow('SELECT * FROM posta');
  } catch(\Exception $e) {
    return false;
    // Veya $this->exec('CREATE TABLE IF NOT EXISTS posta ...');
  }
}

Bir kurulum aşamasında, veritabanındaki tabloları yapılandırma sırasında işe yarayabilir.

PHP ile PDO Sorgu Hatalarını Yakalamak

PHP PDO uzantısını kullanırken, try/catch blokları içerisinde veritabanı bağlantısında oluşabilecek hataları şu şekilde yakalayabiliyoruz.

try {
  $pdo = new \PDO($dsn, $user, $pass);
} catch (\PDOException $e) {
  throw new \Exception('Bağlantı hatası: ' . $e->getMessage());
}

Fakat sorgulardaki hataları bu şekilde yakalayamıyoruz maalesef. Sorgu hatalarını yakalamak için, PDO bağlantısının hemen altına aşağıdaki gibi bir metodla tanımlama yapmamız gerekiyor:

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

Bunu yaptıktan sonra, aşağıdaki gibi sorgu hatalarını yakalayabiliyoruz:

try {
  $query = $pdo->prepare('SELECT * FROM post');
  $query->execute();
  $posts = $query->fetchAll();
} catch (\PDOException $e) {
  throw new \Exception('Sorgu hatası: ' . $e->getMessage());
}

gibi. Kolay gelsin.