
PDOStatement::setAttribute 함수를 사용하여 쿼리 수행에 대한 에러 모드를 설정할 수 있습니다. 에러 모드에는 세 가지 옵션이 있습니다.
1. PDO::ERRMODE_SILENT: 이 모드에서는 에러가 발생해도 아무런 메시지나 예외가 발생하지 않습니다. 하지만, 에러가 발생하면 프로그램이 종료될 수 있으므로 주의해야 합니다.
2. PDO::ERRMODE_WARNING: 이 모드에서는 에러가 발생하면 경고 메시지를 출력합니다. 하지만, 프로그램은 계속 실행됩니다.
3. PDO::ERRMODE_EXCEPTION: 이 모드에서는 에러가 발생하면 예외를 발생시켜 프로그램을 종료합니다. 하지만, 에러를 처리하는 코드를 작성할 수 있습니다.
위의 예시에서 PDO::ERRMODE_EXCEPTION 모드를 사용하였을 때, 에러가 발생하면 예외가 발생하여 프로그램이 종료됩니다. 예외를 처리하는 코드를 작성할 수 있습니다.
#hostingforum.kr
php
$stmt = $pdo->prepare('SELECT * FROM users WHERE id = :id');
$stmt->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
try {
$stmt->execute(['id' => 1]);
} catch (PDOException $e) {
echo '에러 발생: ' . $e->getMessage();
}
캐시 모드를 설정하는 방법은 PDO::ATTR_STATEMENT_CLASS 옵션을 사용합니다. 캐시를 사용하면 쿼리 수행 시 캐시된 결과를 사용하여 프로그램의 성능을 향상시킬 수 있습니다. 하지만, 캐시를 사용하면 데이터의 일관성을 유지하기가 어려울 수 있습니다.
#hostingforum.kr
php
class CacheStatement extends PDOStatement {
private $cache = [];
public function execute($params) {
$key = serialize($params);
if (isset($this->cache[$key])) {
return $this->cache[$key];
}
$result = parent::execute($params);
$this->cache[$key] = $result;
return $result;
}
}
$stmt = $pdo->prepare('SELECT * FROM users WHERE id = :id');
$stmt->setAttribute(PDO::ATTR_STATEMENT_CLASS, ['CacheStatement', [$pdo]]);
$stmt->execute(['id' => 1]);
캐시를 사용하지 않을 때는 캐시 모드를 설정하지 않으면 됩니다. 프로그램의 성능은 향상되지 않지만, 데이터의 일관성을 유지할 수 있습니다.
2025-03-11 19:49