카테고리 없음
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 |