職場のPC(Mac)と自宅のPC,持ち歩き用の2in1 PCと,あちこちでプログラミングをしています.
PCの数だけデータを複製するのもばかばかしいので,某VPSにMySQLをインストールし,そこにデータをぶち込んでアクセスすることにしました.
MySQLの環境構築は別に説明するとして,ネットワーク上にあるMySQLにPHPでアクセスしてみました.
とりあえずはこんなもんで
function opendb($user, $password) {
try {
$dsn = 'mysql:dbname=foo;host=bar.com';
$conn = new PDO ( $dsn, $user, $password );
} catch ( PDOException $e ) {
print ('Connection failed:' . $e->getMessage ()) ;
die ();
}
return $conn;
}
ネットワーク上のbar.comにデータベースfooがあったとして,PDOを作ってデータベースにアクセスするためのユーザー名とパスワードを与えます.念のためtryでくるんで例外処理をさせます.
しかしPHPのPDOは便利ですね.
もう15年以上前になりますが,PostgreSQLとPHPでWEBデータベースを作っていたときにはまだPDOは無くて,pg_connectとかでデータベースに接続していました.
PDOを使えばデータベースの種類に依存しないプログラムが書けるので大変便利です.例えば簡易的にSQLiteを使いたいときにはこんなふうにします.
function opendb($user, $password) {
try {
$dsn = 'sqlite:foo.sqlite';
$conn = new PDO ( $dsn );
} catch ( PDOException $e ) {
print ('Connection failed:' . $e->getMessage ()) ;
die ();
}
return $conn;
}
SQLiteはユーザーという概念がないため,$dsnに直接SQLiteのファイル名を指定するだけです(この場合はfoo.sqlite).
また,SQLiteはメモリにデータベースを構築することができます.
その場合は$dsnの部分を $dsn = 'sqlite:memory:';
とすればOKです.