PHP5.5以上でデータベースに接続するためのテンプレート

naohiro19
記事: 256
登録日時: 14年前
住所: 愛知県

PHP5.5以上でデータベースに接続するためのテンプレート

投稿記事 by naohiro19 » 10年前

PHP5.5以上でデータベースに接続するためのテンプレートをテキストエディタに貼り付ければOKです。

CODE:

getMessage());
		die();
	}
?>
3行目を$dsn = 'mysql:dbname=データベース名;host=データベースサーバー名;charset=utf8'; のように変更してください。
4行目はユーザー名です。
5行目ははパスワードです。

YuO
記事: 947
登録日時: 14年前

Re: PHP5.5以上でデータベースに接続するためのテンプレート

投稿記事 by YuO » 10年前

PDOのコンストラクタ部分は,

CODE:

$dbh = new PDO($dsn, $user, $pass, [
    PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
    PDO::ATTR_EMULATE_PREPARES => false,
    PDO::ATTR_STRINGIFY_FETCHES => false
]);
あたりがよいかな,と思います。
  • PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION
    エラーを例外で通知するように設定します。
    この設定は開発上必須です。
    デフォルトがPDO::ERRMODE_SILENTなので,エラーがあってもPDOが握り潰してしまいます。
    しかし,これを設定することでエラーによって例外が発生するため,問題をちゃんと取得することが出来ますし,try - catchでログに出力するなどもできます
  • PDO::ATTR_EMULATE_PREPARES => false
    クライアントドライバ側でプレースホルダをエミュレート (動的プレースホルダ) せず,サーバー側でプレースホルダ (静的プレースホルダ) を処理するように設定します。
    これは必須ではないですし,サーバーへの通信が増えるため,リクエストが多い場合はtrueの方がよいこともありますが,後述のATTR_STRINGIFY_FETCHESに関わるため,負荷問題がないならばfalseにした方がよいでしょう。
  • PDO::ATTR_STRINGIFY_FETCHES => false
    「fetchしたときの戻り値を数値型の列に対しても,必ず文字列型にする」というPDO::ATTR_STRINGIFY_FETCHESの機能を切る設定です。
    これは,PDO::ATTR_EMULATE_PREPARESが「falseの場合のみ」有効です (動的プレースホルダでは常に文字列化される)。
    PHPで型を気にしたくない,という面は確かにあるのですが,なんだかんだで気にした方が安全であるため,この設定を推奨します。