반응형
php로 개발을 하다보면 db와의 연동은 필수적인 요소라고 할 수 있습니다.
php 5버전부터 제공되는 PDO는 PHP DATA OBJECT의 약자로서
여러가지 데이터베이스를 제어하는 방법을 표준화 시킨 것입니다.
다양한 데이터베이스를 동일한 방법으로 제어가능하며 데이터베이스에 접근할 떄 pdo의 사용을 권장하고 있습니다.
필요한 패키지 및 라이브러리들을 설치한 후, php에서 MYSQL에 연결하기 위해 접속 정보들을 셋팅하고 테스트를 진행해봐야합니다.
db_init을 작성합니다.
<?php
//데이터베이스 로그인 또는 기타 정보들
//db설정
$dbServer = '';
$dbUser = '';
$dbPass = '';
$dbName = '';
//Mysql DSN 문자열
$dsn = "mysql:host={$dbServer};dbname={$dbName};charset=utf8";
try {
//MYSQL db 접속
$dbh = new PDO($dsn, $dbUser, $dbPass);
//준비된 명령문의 에뮬레이션 비활성화
$dbh->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
//ERROR 발생시 예외 발생
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
echo 'ERROR : ' . h($e->getMessage());
}
?>
이렇게 db_init.php를 작성하면
데이터베이스에 접근할 때,
include로 db_init.php를 불러오기만 하면 됩니다.
<?php
include "db_init.php";
$userid = '';
$userpw = '';
$stmt = $dbh->prepare('select * from tablename where userid=:userid and userpw=:userpw');
$stmt->bindParam(':userid', $userid);
$stmt->bindParam(':userpw', $hash);
$stmt->execute();
?>
위의 코드를 보면 db_init.php를 include한 후,
쿼리문을 작성하여 실행시킵니다.
pdo는 prepare문을 사용하여 쿼리를 작성한 후,
넣을 인자를 ":userid"로 선언합니다.
그리고 bindParam을 통해서 인자에 값을 넣어줍니다.
여기서 prepare문과 bindParam을 사용하면
인자를 파라미터로만 인식하여
이스케이핑 처리를 하지 않아도
sql_injection을 방어할 수 있습니다.
(물론 동적으로 쿼리를 생성할 경우 injection이 발생할 수 있습니다.)
여기까지 pdo로 db를 연동하는 법을 알아보았습니다.
반응형
'Develop > PHP' 카테고리의 다른 글
PHP 간단한 회원가입 기능 개발 (3) (0) | 2021.08.11 |
---|---|
PHP 간단한 회원가입 기능 개발 (2) (0) | 2021.08.11 |
PHP 간단한 회원가입 기능 개발 (1) (0) | 2021.08.11 |