반응형
PDO(PHP Data Objecs)방식은 기존 PHP mysql 연결함수(mysql, mysqli)보다 향상된 기능의 객체지향적 DB 연결방식
기존 함수와 비교했을때의 차이점은 크게 2가지이다.
1. 준비구문(Prepare Statements)을 이용한 SQL 삽입공격(SQL Injection) 방어 및 성능향상
2. MySQL, Oracle, MS SQL, PostgreSQL, ... 여러 종류의 DB를 동일한 방식으로 접근
PDO로 DB에 연결
$host = 'localhost'; // host 주소
$database = 'database'; // database 이름
$user = 'root'; // host user
$password = 'root'; // host password
try {
$PDO = new PDO('mysql:host='.$host.';dbname='.$database.';charset=utf8',$user,$password);
// 에러를 처리하는 방식
$PDO->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
// PDO::ERRMODE_EXCEPTION
// PDO::ERRMODE_SILENT -> 에러 코드만 설정
// PDO::ERRMOdE_WARNING -> E_WARNING 발생
// 준비구문(Prepared Statement)의 기능이 없는 경우, false를 지정해서 데이터베이스의 기능을 사용
$PDO->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
} catch(PDOException $Exception) {
die('연결 실패: '.$Exception->getMessage());
}
PDO로 쿼리문 실행
$sql = "SELECT * FROM USER_TABLE WHERE id=:id"; // 실행할 쿼리문
$rs = $PDO->prepare($sql); // PDOStatement객체 반환
$id = 'zakkum';
$rs->bindValue(':id', $zakkum); // :id 에 데이터 바인딩
$rs->execute(); // SQL문 실행
$row = $rs->fetch(PDO::FETCH_ASSOC); // 실행결과
PDO 쿼리문 데이터바인딩 함수
- bindValue($param, $val, ...)
매개변수($val)를 전달
- bindParam($param, &$val, ...)
매개변수($val)를 참조
PDO 쿼리문 결과 함수
- PDOStatement:fetch
쿼리 결과 값 하나의 행을 가져옴
- PDOStatement:fetchAll
쿼리 결과값 복수의 행을 가져옴
PDO 쿼리문 결과 반환형식 constants
- PDO::FETCH_BOTH - default
컬럼이 키 값인 Array 와 컬럼의 순서가 키 값인 Array 둘 다 반환
* 두 개의 배열을 리턴하므로 성능면에서 비효울적
- PDO::FETCH_ASSOC
컬럼이 키 값인 Array 반환
- PDO::FETCH_NUM
컬럼의 순서가 키 값인 Array 반환
- PDO::FETCH_OBJ
Object 반환
- PDO::FETCH_CLASS
Instance 반환
반응형
'PHP' 카테고리의 다른 글
PHP sort() (0) | 2023.06.27 |
---|---|
PSR-1: Basic Coding Standard (0) | 2023.04.21 |
PHP 암호화 복호화 (0) | 2022.11.03 |
PHP mysqli() (0) | 2019.06.21 |