4.07. PHP에서 MySQL 접속하기

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_ 형태로 사용해야 할 필요가 없다면 개인적으로는 권장하지 않는다.