[php] PDO 데이터베이스 속성 설정
PHP 프로젝트에서 데이터베이스에 접속하고 작업을 수행할 때 PDO(PHP Data Objects)를 사용하여 데이터베이스에 연결하는 것이 좋습니다. PDO를 사용하면 다양한 데이터베이스 엔진(MySQL, PostgreSQL, SQLite 등)에 쉽게 접속할 수 있으며, SQL 인젝션과 같은 공격으로부터 안전한 쿼리를 수행할 수 있습니다.
PDO 데이터베이스 속성 설정하기
PDO로 데이터베이스에 접속하기 전에 몇 가지 속성을 설정할 수 있습니다. 이러한 속성은 데이터베이스와의 연결을 조절하고 데이터를 가져올 때의 동작을 제어하는 데 사용됩니다.
<?php
$dsn = 'mysql:host=localhost;dbname=mydatabase';
$username = 'username';
$password = 'password';
$options = [
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_EMULATE_PREPARES => false,
PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"
];
try {
$pdo = new PDO($dsn, $username, $password, $options);
} catch (PDOException $e) {
echo '데이터베이스에 접속할 수 없습니다: ' . $e->getMessage();
}
?>
위 예제에서는 ATTR_ERRMODE
를 사용하여 에러 모드를 ERRMODE_EXCEPTION
으로 설정하여 데이터베이스 예외를 발생시키도록 했습니다. 또한 ATTR_EMULATE_PREPARES
를 false
로 설정하여 PDO가 모의 실행을 사용하지 않도록 했습니다. 그리고 MYSQL_ATTR_INIT_COMMAND
를 사용하여 데이터베이스에 연결할 때 실행할 초기 명령을 설정하였습니다.
속성 설정 옵션
PDO::ATTR_ERRMODE
PDO::ERRMODE_EXCEPTION
: 예외를 throw하고 에러 모드를 설정합니다.PDO::ERRMODE_SILENT
: 에러 코드를 설정합니다.PDO::ERRMODE_WARNING
: 에러를 발생시키고 경고를 출력합니다.
PDO::ATTR_EMULATE_PREPARES
true
: 모의 실행을 사용합니다.false
: 모의 실행을 사용하지 않습니다.
엔진별 추가 속성
각각의 데이터베이스 엔진은 추가적으로 설정할 수 있는 속성들이 있습니다. MySQL의 경우 MYSQL_ATTR_INIT_COMMAND
를 사용하여 초기 명령을 설정할 수 있습니다.
PDO를 사용하여 데이터베이스를 다룰 때 이러한 속성들을 올바르게 설정하고 활용하면 안정적이고 효율적으로 데이터베이스를 처리할 수 있습니다.
본 문서는 아래 자료를 참조하여 작성되었습니다.