본문 바로가기
Q&A2018년 7월 2일1분 읽기

PHP PDO 사용법 — SQL 인젝션 방지

P
PHP개발자
조회 2313댓글 3

PHP에서 데이터베이스 작업할 때 SQL 인젝션을 방지하기 위해 PDO를 사용하라고 들었는데, 구체적인 사용법을 알고 싶습니다.

현재 mysql_query()를 쓰고 있는데 PDO로 전환하려면 어떻게 해야 하나요?

// 기존 위험한 코드
$result = mysql_query("SELECT * FROM users WHERE id = " . $_GET['id']);

이런 코드를 PDO로 안전하게 바꾸는 방법을 알려주세요.

댓글 3

코코딩하는민수8년 전
PDO prepared statement를 사용하시면 됩니다.
```php
$pdo = new PDO("mysql:host=localhost;dbname=test", $user, $pass);
$stmt = $pdo->prepare("SELECT * FROM users WHERE id = :id");
$stmt->execute([":id" => $_GET["id"]]);
$user = $stmt->fetch();
```
이렇게 하면 SQL 인젝션을 원천 차단할 수 있습니다.
프프론트수진8년 전
추가로 PDO::ATTR_ERRMODE를 PDO::ERRMODE_EXCEPTION으로 설정하면 에러 처리도 깔끔해집니다. 그리고 mysql_query()는 PHP 7에서 완전히 제거되었으니 빨리 전환하세요.
PPHP개발자(guest)코딩하는민수8년 전
감사합니다! prepared statement가 핵심이군요. 바로 적용해보겠습니다.
Ctrl+Enter로 등록