본문 바로가기

인턴일지

MySQL - PHP

PDO ( PHP - Data - Objects) 는 오라클 서버, 마이크로소프트 SQL 서버를 비롯한 거의 모든 데이터베이스 서버에 접속할 수 있다는 장점이 있다. 

일반적으로 PDO를 사용한 코드가 다른 라이브러리를 쓴 코드보다 작성하기 쉽고 더 잘 읽힌다. 

준비된 구문과 명명 매개변수 기능도 PDO의 중요한 장점으로 꼽힌다.


<?php
try {
$pdo = new PDO('mysql:host=localhost;dbname=ijdb_sample', 'ijdb_sample', 'mypassword');
$output = '데이터베이스 접속 성공.';
}
catch (PDOException $e) {
$output = '데이터베이스 서버에 접속할 수 없습니다: ' . $e;
}
include __DIR__ . '/../templates/output.html.php';


$pdo  : PDO라는 함수가 반환하는 객체를 담는 변수. 나중에 데이터베이스를 조작할 때 사용함

$e : PDO의 예외사항을 담는 변수. 자세한 오류메세지를 비롯해 예외에 대한 여러 정보를 제공한다.


<create 예문>

    $sql = "CREATE TABLE IF NOT EXISTS joke 
    (
      id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, 
      joketext TEXT, 
      jokedate DATE NOT NULL 

       ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1; 

    INSERT INTO joke (joketext, jokedate) values ('jokes','2014-04-22')"; 


$query는 실행하고자 하는 SQL 쿼리 문자열을 담는다.

query( ) 메서드는 exec()처럼 SQL 쿼리를 전달받아 데이터베이스 서버로 전송하지만 exec()와 달리 PDOStatement 객체를 반환한다. 쿼리 실행 결과로 반환된 모든 로우의 목록이 이 객체에 담긴다.

while( $row = $result->fetch() ) {

// 로우처리 

fetch() 메서드는 결과 집합의 로우를 하나씩 배열로 반환하다가 더는 반환할 로우가 없으면 false를 반환한다.

$row = $result->fetch() 구문은 $row 변수에 값을 할당하는 동시에 구문 자체가 값을 나타낸다.

fetch()는 연관 배열 형태로 결과 로우를 반환하는데, 이 배열의 각 키는 테이블의 칼럼명과 같다. 결과 로우가 $row에 저장되면 joketext 칼럼에 저장된 값은 $row['joketext'] 로 가져온다. // joketext의 값을 가져옴


fetch와 관련된 사이트 *https://oddly.tistory.com/8


php의 배열 : while, for < foreach

foreach( 배열 as 변수명){ ... } 


mysql - php 연동해서  불러오기

<?php


try {

  $pdo = new PDO('mysql:host=localhost;dbname=ninja_test;charset=utf8','tester','tester1234');

  $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);


  $sql = 'SELECT * FROM joke';

$st = $pdo-> query($sql);

$st->execute();  

// Fetch 모드를 설정

$st->setFetchMode(PDO::FETCH_ASSOC);

// 1 row 씩 가져오기

while($row= $st->fetch()) {

    echo$row['joketext'].'<br/>';

}

}

catch (PDOException $e) {

  $output = '데이터베이스 오류: ' . $e->getMessage() . ', 위치: ' .

  $e->getFile() . ':' . $e->getLine();

}

include __DIR__.'/output.html.php';


#문제

1. 한글지원 -> 설정파일에서 uft8로 다 변경했음. 콘솔에선 깨지고 php로 본 화면에서는 정상적 작동

문제는 콘솔에서 한글이 안나오는것!! (그럼 직접 입력하면 한글안되나? 한글이 입력이 안됨...)


'인턴일지' 카테고리의 다른 글

mysql 쿼리문  (0) 2019.02.28
php  (0) 2019.02.21
mariaDB  (0) 2019.02.20
MySQL 설정  (0) 2019.02.19
아파치 설정  (0) 2019.02.19