목차


 PDO 연결

// php.ini 944행 extension=pdo_mysql 주석해제, 아파치 재시작

$db_host       = "localhost";  // host
$db_user       = "user";       // user
$db_password   = "password";    // password
$db_name       = "employees";  // DB name
$db_charset    = "utf8mb4";    // charset
$db_dns        = "mysql:host=".$db_host.";dbname=".$db_name.";charset=".$db_charset;
$db_option     = 
    array(
        PDO::ATTR_EMULATE_PREPARES      => false // DB의 Prepared Statement 기능을 사용하도록 설정, true일경우 PBO의 기능을 사용
        , PDO::ATTR_ERRMODE             => PDO::ERRMODE_EXCEPTION // PDO Exception을 Throws하도록 설정
        , PDO::ATTR_DEFAULT_FETCH_MODE  => PDO::FETCH_ASSOC // 연상배열로 Fetch를 하도록 설정
);

// PDO Class로 DB 연동
$obj_conn = new PDO( $db_dns, $db_user, $db_password, $db_option );



$obj_conn = null; // DB 연결 끊기

 

 SELECT 예제

$sql = 
    " SELECT "
    ."      emp.emp_no "
    ."      ,sal.salary "
    ."      ,emp.birth_date "
    ." FROM " 
    ."      employees emp "
    ."          INNER JOIN salaries sal "
    ."          ON emp.emp_no = sal.emp_no "
    ." WHERE " 
    ."      ( "
    ."          emp.emp_no = :emp_no1 "
    ."          OR emp.emp_no = :emp_no2 "
    ."      ) "
    ."      AND sal.to_date = DATE(99990101) ";

$arr_prepare = 
    array(
        ":emp_no1" => 10001
        , ":emp_no2" => 10002
    );

$stmt = $obj_conn->prepare( $sql ); // Prepare Statement를 생성
$stmt->execute( $arr_prepare ); // 쿼리 실행
$result = $stmt->fetchAll(); // 쿼리 결과를 fetch
// var_dump( $result );

foreach( $result as $val ) {
    echo $val["emp_no"]." : $".$val["salary"].", ".$val["birth_date"]."\n";
}

 

 INSERT 예제

HeidiSQL에서 갱신이 안된다면 DB 쿼리에 FLUSH PRIVILEGES; 입력 후 DB새로고침

$sql = 
    " INSERT INTO departments( "
    ."  dept_no "
    ."  ,dept_name "
    ." ) "
    ." VALUES( "
    ."  :dept_no "
    ."  ,:dept_name "
    ." ) ";

$arr_prepare =
    array (
        ":dept_no" => "d011"
        ,":dept_name" => "PHP풀스택"
    );

$stmt = $obj_conn->prepare( $sql );
$result = $stmt->execute( $arr_prepare );
$obj_conn->commit();
var_dump( $result );

 

Github

Link

 

'PHP > PHP_ex' 카테고리의 다른 글

try-catch  (0) 2023.04.04
fnc DB connect  (0) 2023.04.03
prepared_statement  (0) 2023.04.03
DBconnect  (0) 2023.04.01
file  (0) 2023.04.01

+ Recent posts