10年以上ぶりにログインした。停止mailが来たので。とりあえず更新しておく。
正規表現を本を見ないですらすら使いこなせると非常にスマートに見えますよね。自分はどうもまだ覚えられない。毎回使うたびに本を確認しないと無理。毎回忘れとるよ、、。
■接続方法
PEAR DB
$dsn = "pgsql://username:userpass@localhost/dbname";
PDO
$dsn = "pgsql:dbname=dbname; user=username; password=userpass; host=localhost;";
※「;」は無くてもいいみたい。
PEAR DB
require_once("DB.php");
$db = DB::connect($dsn);
PDO
$db = new PDO($dsn);
■SQLの実行
$sql = "SELECT * FROM tablename";
PEAR DB
$res = $db->query($sql);
PDO
$res = $db->query($sql);
※クエリーは同じだが、実際にはPDOでは、プリペアドステートメントを利用する。こっちの方が早くなり、SQLインジェクション対策を自動的にしてくれるようです。
$res = $db->prepare($sql);
$res->execute();
■トランザクション
PEAR DB
$db->query("BEGIN");
PDO
$db->beginTransaction();
--------
PEAR DB
$db->query("ROLLBACK");
PDO
$db->rollBack();
-------
PEAR DB
$db->query("COMMIT");
PDO
$db->commit();
■エラーハンドリング
PEAR DB
if (DB::isError($db)) {
die("接続失敗{$db->getMessage()}");
}
PDO
try{
} catch (PDOException $e) {
die("接続失敗{$e->getMessage()}");
}
PEAR DB
$dsn = "pgsql://username:userpass@localhost/dbname";
PDO
$dsn = "pgsql:dbname=dbname; user=username; password=userpass; host=localhost;";
※「;」は無くてもいいみたい。
PEAR DB
require_once("DB.php");
$db = DB::connect($dsn);
PDO
$db = new PDO($dsn);
■SQLの実行
$sql = "SELECT * FROM tablename";
PEAR DB
$res = $db->query($sql);
PDO
$res = $db->query($sql);
※クエリーは同じだが、実際にはPDOでは、プリペアドステートメントを利用する。こっちの方が早くなり、SQLインジェクション対策を自動的にしてくれるようです。
$res = $db->prepare($sql);
$res->execute();
■トランザクション
PEAR DB
$db->query("BEGIN");
PDO
$db->beginTransaction();
--------
PEAR DB
$db->query("ROLLBACK");
PDO
$db->rollBack();
-------
PEAR DB
$db->query("COMMIT");
PDO
$db->commit();
■エラーハンドリング
PEAR DB
if (DB::isError($db)) {
die("接続失敗{$db->getMessage()}");
}
PDO
try{
} catch (PDOException $e) {
die("接続失敗{$e->getMessage()}");
}