카테고리 없음

php pdo 데이터 베이스 접속 방법

아뱅스 2019. 1. 28. 17:56

예제가 가득한 php 프로그래밍에서 pdo 데이터 접속 하는 개발 코드가 잘 설명 되어 있어서, 

적어본다. 


너무 상세하게 처음 공부하는 개발자에게 도움이 될 것 같다. 

jsp를 다루다가 php를 처음 다뤄보지만 이 책 덕분에 배워가는게 많다.  


php 국내 서적이 필요하다면 이책 추천!! 


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
<?php 
    // setAttribute() 메소드는 데이터 베이스를 접속할때의 설정이나, sql 문을 실행할때의 동작 등 데이터 베이스 핸들의 속성을 변경하는 메소드 
 
 
 
 
    $dbServer ='localhost';
    $dbUser'데이터베이스 접속 이름';
    $dbPass = '데이터베이스 접속 비밀번호';
    $dbName = '사용할 데이터베이스 이름 ';
    $dsn="mysql:host={$dbServer};dbname={$dbName};charset=utf8";
    //SQLite 용 DSN 문자열입니다.
 
 
try {
 
    $db=new PDO($dsn$dbUser,$dbPass);
    // 준비된 명령문의 에뮬레이션을 비활성화 시킵니다. 
    $db->setAttribute(PDO::ATTR_EMULATE_PREPARES, FALSE);
    //오류가 발생할 경우 예외가 발생합니다. 
    $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    echo '데이터 베이스에 접속했습니다.';
 
    //데이터베이스에서 여러개의 레코드를 취득하려면 준비된 명령문 (prepared state ment)을 사용하여
    //sql 문을 실행하고 fetchAll () 메소드로 결과를 가져옵니다. 
    //복수행의 결과를 얻은 Sql 문을 실행할 경우에는 같은 sql문을 실행해도 결과의 순서가 바뀔 수 있습니다. 
    //레코드의 순서를 같게 하려면 반드리 'order by'문을 사용하여 정렬하는 컬럼과 정렬 순서를 지정해야된다. 
    
    //pdo 객체의 prepare() 메소드로 실행하려는 select sql문을 지정하면 pdo statement 객체를 생성합니다. 
    // 이 pdoStatement 객체에 대해 bindValue() 메소드를 사용 하여  Sql 문의 파라미터를 설정합니다. 
    //이때 제 1인수에는 sql문에 내장된 파라미터 부분의 문자열을 
     $sql ='SELECT * FROM example WHERE id = :id or language = :language';
     $prepare =$db->prepare($sql);
     //sql문의 플레스 홀더에 값을 바인딩 하고 쿼리를 실행합니다. 
     $prepare->bindValue(':id'1, PDO::PARAM_INT);
     $prepare->bindValue(':language''RUDY', PDO::PARAM_STR);
     $prepare->execute();
     
     echo '<pre>';
     //쿼리 결과를 숫자 첨자로 배열로 구합니다. 
     $result = $prepare->fetchAll(PDO::FETCH_NUM);
     echo "숫자 첨자 배열로 취득한 경우 \n"
     print_r(h($result));
     echo "/n";
     
     // 다시 쿼리를 실행하고 결과를 컬럼명을 키로 한 연관 배열에서 구합니다. 
     $prepare->execute();
     $result = $prepare->fetchAll(PDO::FETCH_ASSOC);
     echo "컬럼명을 키로 한 연관 배열로 취득한 경우 /n";
     print_r(h($result));
     echo "/n";
     
     //다시 쿼리를 싱행하고 쿼리 결과를 수치 첨자, 컬럼명 모두의 배열에서 구합니다. 
     $prepare->execute();
     echo "숫자 첨자, 컬럼명 모두의 배열에서 취득한 경우 /n";
     $result = $prepare->fetchAll(PDO::FETCH_BOTH);
     print_r(h($result));
     echo "</pre>";
     
     //오류가 발생할 경우 pdoexception 예외가 발생되므로 캐치합니다. 
     
} catch (PDOException $e) {
     echo '접속할수 없었습니다. 이유 : ' .h($e->getMessage());
 }
 
function h($var) {
    if(is_array($var)){
        return array_map('h'$var);
    }else {
        return htmlspecialchars($var,ENT_QUOTES,'utf-8');
    }
?>
cs