end0tknr's kipple - web写経開発

太宰府天満宮の狛犬って、妙にカワイイ

php (PDO)による DB接続~SQL実行

以下の通りです。

先日の 問合せフォーム用 ajax web api server side php code - end0tknr's kipple - 新web写経開発 に続く、手習い

<?php

$db_conf = array(
                 'dsn'   =>'mysql:dbname=xing;host=localhost;charset=utf8',
                 'user'  =>'root',
                 'pw'    =>'ないしょ',
                 'option'=>array(PDO::ATTR_AUTOCOMMIT=>true,
                                 PDO::ATTR_ERRMODE   =>PDO::ERRMODE_EXCEPTION) );

init();
main();


function main(){
    global $db_conf;
    $dbh = connect_db($db_conf);

    try {
        $sth = $dbh->prepare('SELECT * FROM test_tbl limit ?');
        //$sth->bindValue(1, "HGOE", PDO::PARAM_STR);
        $sth->bindValue(1, 10, PDO::PARAM_INT);
        $sth->execute();
    } catch (PDOException $e) {
        $tmp_msg = "fail sql ". $e->getMessage();
        error_log($tmp_msg);
        die($tmp_msg);
        // return null;
    }

    foreach ($sth as $row) {
        error_log(var_dump($row));
    }

    $pdo = null; // DB切断
}


function connect_db($db_conf){
    try {
        $dbh = new PDO($db_conf['dsn'],
                       $db_conf['user'],$db_conf['pw'],
                       $db_conf['option']);
    } catch (PDOException $e) {
        $tmp_msg = "fail connect_db()". $e->getMessage(); 
        error_log($tmp_msg);
        die($tmp_msg);
    }
    return $dbh;
}


function init(){  // php.ini 代替設定
    // ini_set('extension', 'php_pdo.dll');

    // error_log() method により、apache error_log へ出力する為
    ini_set('display_errors', 1);
    ini_set("error_reporting",E_ALL);
    ini_set("log_errors","on");
    ini_set('error_log', 'php://stderr');
    // ini_set('error_log', '/path/to/logs/php.log');
    
    ini_set("date.timezone", "Asia/Tokyo");

    // session有効期間
    ini_set( 'session.gc_divisor', 1);
    ini_set( 'session.gc_maxlifetime', 60*30 ); //sec
}