PHP에서 MySQL 데이터베이스에 접속하기 위한 코드를 알아본다.
MySQL 데이터베이스 생성하기에서 만든 접속 정보를 PHP파일에 기술함으로써 PHP에서 데이터베이스에 접속할 수 있게 한다.
<?php
function db_get_pdo()
{
$host = 'localhost';
$port = '3306';
$dbname = 'php3min';
$charset = 'utf8';
$username = 'php3min';
$db_pw = "1234";
$dsn = "mysql:host=$host;port=$port;dbname=$dbname;charset=$charset";
$pdo = new PDO($dsn, $username, $db_pw);
return $pdo;
}
위 코드를 db.php 로 저장한다. 이 코드는 데이터베이스 섹션 전반에 쓰인다.
php에서 데이터베이스에 접속하기 위해서는 PDO 라는 내장 객체를 사용한다. 데이터베이스에 쿼리를 실행할 때마다 늘 똑같이 해야 하는 일이 데이터베이스에 연결하는 것이므로 db_get_pdo() 함수를 분리했다.
- host 는 데이터베이스 서버의 주소다. localhost 는 본인의 컴퓨터라는 뜻이다.
- port 는 데이터베이스 서버의 포트. MySQL의 데이터가 오가는 통로다.
- dbname 은 데이터베이스 이름이다.
- charset 은 인코딩 방법이다. 대부분 utf8 을 사용한다.
- username 은 데이터베이스 사용자 이름이다.
- db_pw 은 데이터베이스 사용자 비밀번호다.
- dsn 은 데이터베이스 관련 정보를 바탕으로 만든 데이터베이스 연결 문자열이다.
- PDO 객체는 dsn, 사용자 이름, 사용자 비밀번호 를 파라미터로 받아서 데이터베이스에 실제로 연결하는 역할을 한다.
PDO 외에도 mysql_ 계열 함수가 있으나 PHP 7 이상에서 deprecated(사용 권장 안함) 처리되었으므로 사용하지 말자. mysql_ 계열 함수를 수정한 mysqli_ 계열 함수도 있는데, 둘 간의 차이점은 아래와 같다.
차이PDOmysqli_
코드 스타일 | 객체 지향적 | 절차 지향적 |
지원 데이터베이스 | 여러가지 | MySQL |
굳이 mysqli_ 형태로 사용해야 할 필요가 없다면 개인적으로는 권장하지 않는다.