5
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

PHPでネットワーク上のMySQLにアクセスする

Posted at

職場の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です.

5
5
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?