PHP DB 접속

(2019-08-01)

MySQL Improved, mysqli, PHP Data Objects, PDO


1. PHP로부터 DB 접속MySQLDB 접속을 위한 3가지 API
     -  mysql_   : MySQL 라이브러리 (PHP 5.5 부터 제거 대상, PHP 7.0 부터 폐기)
     -  mysqli_  : MySQL Improved 라이브러리 (PHP 5.0부터 도입)
     -  PDO      : PHP Data Objects (PDO) interface (PHP 5.1부터 도입)
        . 객체지향 프로그래밍으로 사용 가능
        . PDO 확장 기능이 제공하는 클래스
        . 가능 DB : MySQL,PostgreSQL,Oracle,SQLite,ODBC,MS-SQL 등


2. mysqli_ 접속 방법

  ㅇ (절차식 프로그래밍 방식) 

  ㅇ (객체지향 프로그래밍 방식)
     - $mysqli = new mysqli('hostname', 'username', 'password', 'databasename');
        
$mysqli = new mysqli('hostname','username','password','databasename');
if($mysqli->connect_errno) die('db 접속 실패',$mysqli->connect_error);
3. PDO 접속 및 사용 방법 ㅇ PDO 접속 방법 - $pdo = new PDO(dsn, 'username', 'password'); . dsn (Data Source Name) : 'dbtype:host=hostname;dbname=databasename' . dbtype : MySQLDBMS 종류 (例, mysql 등) . hostname : 서버호스트명 (例, localhost 등) . databasename : 대상 데이터베이스명 . $pdo : 커넥션 식별 정보를 갖고 반환되는 PDO 객체
try {
    $pdo = new PDO('mysql:host=localhost;dbname=test','username','password');
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        // 문제 발생시, 오류 숨기지 않고 오류 처리
} catch (PDOException $e) {
    echo "데이터베이스에 접속할 수 없습니다!";
        echo $e->getMessage(); // 예외 발생 메세지
        echo $e->getFile(); // 예외 발생 파일명(스크립트명)
        echo $e->getLine(); // 스크립트 내 예외 발생 위치
    exit;
}
ㅇ PDO 오류처리방식 ☞ PHP 홈 : Errors and error handling 참조 - 3가지 모드로 동작 : 침묵(silent,기본), 경고(warning), 예외(exception) . PDO::ERRMODE_SILENT (default), PDO::ERRMODE_WARNING, PDO::ERRMODE_EXCEPTION - 침묵 모드 (default) . 실행중 문제 발생하면, 예외 발생 없이, PDO 관련 메소드가 false를 반환 . 이에따른 errorInfo() 메서드를 이용하면, 자세한 오류 정보를 얻을 수 있음 - 경고 모드 : $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING); . 실행중 문제 발생하면, 예외 발생 없이, 경고 수준의 오류 메세지 발생 - 예외 모드 : $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); . 모든 문제를 자세히 알려줌 (예외 처리 안하면, 프로그램 실행이 중단됨) ㅇ PDO 사용방법 - SQL 쿼리 (단순 열람) . $affectedRowsNums = $pdo->exec($sql); .. exec() 메소드는, 쿼리 수행 결과에 따라 변경된 레코드 개수 만을 반환함 .. 주로, create table, insert into, update, delete 등의 sql 명령에 적합 - SQL 쿼리 (결과 레코드 집합 반환) . $result = $pdo->query($sql); .. query() 메소드는, 모든 결과 레코드 집합이 담긴 PDOStatement 객체를 반환 - SQL 쿼리 결과 처리
while ($row = $result->fetch()) {
    // 매 레코드(row) 마다 처리
}

PHP
   1. PHP   2. PHP 기초 문법   3. PHP 및 HTTP   4. PHP 정규표현식   5. PHP 쿠키/세션   6. PHP 내장 웹서버   7. PHP 환경 설정   8. PHP 객체지향   9. PHP DB 접속  


Copyrightⓒ written by 차재복 (Cha Jae Bok)               기술용어해설 후원
"본 웹사이트 내 모든 저작물은 원출처를 밝히는 한 자유롭게 사용(상업화포함) 가능합니다"