PHPでのデータベースへ接続とSQLクエリの実行をよりシンプルに行えるようにする

pdo
このエントリーをはてなブックマークに追加
PR

PHPでMySQLに接続するときに、PDOを使って接続する方法が現在は推奨されているようです。PDOを使った接続もわかりやすいものとのなっていますが、DBへの接続は頻繁につかうのでよりシンプルで扱いやすいようにテンプレ化します

 

PHPでPDO接続をより扱いやすくする

通常のPDO接続

//DB情報
$db_host  = "localhost";
$db_name  = "database_name";
$db_id    = "database_id";
$db_pass  = "database_password";
$db_table = "table_name";


//PDOでデータベースへ接続
try {
  $pdo = new PDO("mysql:dbname=$db_name;host=$db_host;charset=utf8","$db_id","$db_pass"));
} catch (PDOException $e) {
  die($e->getMessage());
}


//DBの取得
$sql = $pdo ->prepare("SELECT * FROM ".$db_table);
$sql->execute();
$result = $sql->fetchAll(PDO::FETCH_ASSOC);
$pdo = null;


//DBへの格納
$sql = $pdo -> prepare( "INSERT INTO ".$db_table." (id) VALUES ('".$value["id"]."')");
$sql->execute();
$pdo = null;

 

扱いやすくしたPDO接続

include 用

function db($value){
  //DB接続情報
  $db_host  = "localhost";
  $db_name  = "database_name";
  $db_id    = "database_id";
  $db_pass  = "database_password";

  //DB接続から閉じるまでの一連の動作
  $pdo = new PDO("mysql:dbname=$db_name;host=$db_host;charset=utf8",$db_id,$db_pass);
  $sql = $pdo->prepare($value);
  $sql->execute();
  return $sql->fetchAll(PDO::FETCH_ASSOC);
  $pdo = null;
}

 

実行用

include_once("db_Connection.php"); //DB接続情報の読み込み
$db_table  = "table_name"; //テーブルの指定

$select = db ("SELECT * FROM ".$db_table);//DBの取得
db ("INSERT INTO ".$db_table." (id) VALUES (100)");//DBへの格納

 

include用と実行用を分離しました、DBの接続設定はincludeしているファイルで行うことで 実際にDBの操作を行うファイルでは db() と関数を呼び出して中にクエリ分を書くだけで使えるようにしているので短く使えます。また設定を分離することで、再利用しやすくなります、DBへの接続情報が変わった時に一括して変えれるメリットがあります。

DBから取り出す時と、DBへ格納するときのフォーマットも共通化しています。返り値が欲しい場合は変数にreturnが入るようにするだけなので 変数 = 関数 とするだけで楽です。取得したものは 配列にする工程があるのですが PDO::FETCH_ASSOC で固定してあります。もしこの値を都度変えたい場合は、その部分を引数で渡せるようにするのも有りかと思います。

接続のtryのところは省きました、接続できない時はどちらにしろエラーが出ます。今回の例では、DB接続が2回だけで書いていますので、それほど差が無い感じがするのですが 利用頻度が上がってくると差が大きくなります。また実際に使うときは db(クエリ文); という書き方なので、書く量が少なく時短にもなる。

PR

COMMENT

コメントを残す

PR

9ineBBの管理人が運営するサイト

WDG WEB DESIGN GALLERY ウェブデザインギャラリー CC0 PHOTO 無料で使える高画質な写真をダウンロード、クレジット表記、リンク不要

9ineBBの最新情報をチェック・購読

Twitter Facebook Google+ Feedly RSS

どこをクリックしてもこの表示を消せます
(3日後以降に再度表示されます)