end0tknr's kipple - web写経開発

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

phpのPDOによるmysql / postgres接続練習

mysqlの場合

<?php
$db_name = 'mysql:dbname=test;host=localhost';
$db_user = 'root';
$db_pass = 'ないしょ';
//以下のoptionにより、PDOException が発生
$db_opt  = [PDO::ATTR_ERRMODE =>PDO::ERRMODE_EXCEPTION];

try {
    $dbh = new PDO($db_name,$db_user,$db_pass,$db_opt);
} catch (PDOException $e) {
    exit('ERROR fail PDO() ' . $e->getMessage());
}

$sql = 'select * from test_tbl where id<=:id';

try {
    $sth = $dbh->prepare($sql);
    $sth->bindValue(':id', 1);
    $sth->execute();
} catch (PDOException $e) {
    exit('ERROR fail sql ' . $e->getMessage());
}


// $ret_rows = $sth->fetchAll(PDO::FETCH_ASSOC);
// var_dump($ret_rows);

while($ret_row = $sth->fetch(PDO::FETCH_ASSOC)){
    var_dump($ret_row);
}
?>

↑こう書くと、↓こう表示されます

$ php foo_mysql.php 
array(2) {
  ["id"] => string(1) "1"
  ["val"]=> string(4) "VAL1"
}

postgresの場合

と言っても、先程のmysqと比較して、接続時の $db_name が異なる程度です

<?php
//$db_name = 'mysql:dbname=test;host=localhost';
$db_name = 'pgsql:dbname=db_rear_hon host=localhost port=5432';

$db_user = 'ないしょ';
$db_pass = 'ないしょ';
//以下により PDOException が有効化
$db_opt  = [PDO::ATTR_ERRMODE =>PDO::ERRMODE_EXCEPTION];

try {
    $dbh = new PDO($db_name,$db_user,$db_pass,$db_opt);
    $sql = "SET NAMES 'UTF8'";
    $sth = $dbh->prepare($sql);
    $sth->execute();
} catch (PDOException $e) {
    exit('ERROR fail PDO() ' . $e->getMessage());
}

$sql = 'select * from test_tbl where id<=:id';

try {
    $sth = $dbh->prepare($sql);
    $sth->bindValue(':id', 1);
    $sth->execute();
} catch (PDOException $e) {
    exit('ERROR fail sql ' . $e->getMessage());
}


// $ret_rows = $sth->fetchAll(PDO::FETCH_ASSOC);
// var_dump($ret_rows);

while($ret_row = $sth->fetch(PDO::FETCH_ASSOC)){
    var_dump($ret_row);
}
?>