あずきみるくのあずきはニガテ - for Engineer

ひよっこプログラマがやってみたことやハマっちゃったことなど、備忘録的な感じで書いていきます。

PHPいろいろ - DB(MySQL)につなごう!*番外編*

昨日。

DB接続ではまりました。

どうやら、MySQLの接続には3種類のAPIが用意されていたようです。
PHP: どの API を使うか - Manual


これだけ見てると、PDO_MySQLの方がいいのかしら。。。


と、いうわけで、PDO_MySQLを使ったコードも書いてみた。

今回はちゃんと設定情報、外だしにするよ!!


1)設定情報の作成

まずは、設定情報を格納するファイルを別に作成。
場所は「(プロジェクト)/conf/DSN.php

ポイントは「htdocs」配下に置かないこと。

なんでか、っていうと、設定ファイルはアクセスしてきたユーザには見られたくないもの。
なので、「htdocs」配下には置きません。


階層はこんな感じ。
f:id:azuki-milk-lush:20150206115546j:plain

中身はこんなの。

<?php
/*
 * DBの接続情報を設定します
 */
	// 設定内容を変数に格納
	$host = 'localhost';
	$dbName = '(データベース名)';
	$charset = '(文字コード)';
	$user = '(ユーザ名)';
	$password ='(パスワード)';

	// 定数を設定
	define('DSN', "mysql:host=$host;dbname=$dbName;charset=$charset");
	define('DB_USER', $user);
	define('DB_PWD', $password);
?>

接続情報を変数で修正しやすいようにして、それをはめ込んだ定数を作ったわけです。

2)DBアクセスファイルの作成

で、実際に呼び出し(接続)する中身のコード。
[htdocs/pdo_mySQL.php]

<html>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
<head><title>PHP TEST</title></head>
<body>

<?php
	// 別ファイルに記述しているDB設定情報ファイルを読み込む
	require_once '../conf/DSN.php';

	try{
		// mySQLに接続
		$db = new PDO(DSN, DB_USER, DB_PWD);

		// エラーが発生した場合、例外がスローされるようにする
		$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

		print 'データベースに接続しました';

	// 例外が発生したらcatchします
	}catch(PDOException $e){

		echo '接続できませんでした 理由: ' . $e->getMessage();

	}
?>
</body>
</html>

見ていただいたまんまです。

ちなみに、PDOのデータベース接続は「close」を書かなくても、スクリプトの実行終了時に自動的に切断されます。

書かなくていいって便利だね。

明示的に切断したい場合は

$db = null;

として、参照を削除すればいいです。

3)実行

では、実行します。

http://localhost/pdo_mySQL.php でやってみましょう。

f:id:azuki-milk-lush:20150206130244j:plain

でましたー!!

というわけで、どっちを使う方がいいのか、まだわかってないけど、とりあえず進めてみました。
あ、でも、SQLの書き方とか変わってくるなら、そこまで試してみたいな~。

やりたいことが山積みですw

<本日の先生>

PHP逆引きレシピ 第2版 (PROGRAMMER’S RECiPE)

PHP逆引きレシピ 第2版 (PROGRAMMER’S RECiPE)