*

【php】MySQLを操作する

公開日: : 最終更新日:2012/08/12 php

MySQLを操作する際のテンプレ


//DBに接続する
//直近に実行された MySQL 操作のエラーメッセージを 返す
$dbConn = mysql_connect("ホスト:ポート", "ユーザー名", "パスワード") or die ("接続失敗");

//データベースを指定する or die 直近に実行された MySQL 操作のエラーメッセージを 返す
mysql_select_db( "DB名", $dbConn ) or die(mysql_error($dbConn));

//クエリを実行する
mysql_query("クエリ文");

//DB接続を切断する
mysql_close($dbConn);

上記のライブラリは開発が終了しており非推奨のようです。

PHPマニュアルより
この拡張モジュールを使うことはおすすめできません。 MySQLi あるいは PDO_MySQL を使うべきです。

ということでオブジェクト志向にPDOを使うことにしました。
まずはDBへの接続と切断。

//DB接続
function connect_db()
{
	// MySQLへの接続情報
	$dsn = 'mysql:dbname='.DB_NAME.';host='.DB_HOST;
	$user = DB_USER;
	$password = DB_PASS;
	
	//DB接続
	$dbh = null;
	try {
	    $dbh = new PDO($dsn, $user, $password);
	} catch (PDOException $e) {
	    //echo 'Connection failed: ' . $e->getMessage();
	}
	
	return $dbh;
}

//DB切断。明示的に実行しなくてもスクリプトの終了時に自動的に切断される。
function disconnect_db($dbConn)
{
	$dbConn = null;
}

//トランザクション
//トランザクション開始
try {

	$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
	$dbh->beginTransaction();
	
	//更新処理を記述
	
	$dbh->commit();
} catch (Exception $e) {
	$dbh->rollBack();
	Debug::w("Failed to transaction. Rollbacked", LOG_FILE, __LINE__);
}



続いてCRUD処理。
prepareを使ってパース結果を再利用するようにします。


//selectの実行
$stmt = $dbh->prepare("SELECT keyword,count FROM ".DB_TABLE_SERCHWORD." where keyword = ?");
$exist = false;
$count = 0;

if ( $stmt->execute(array($keyword)) ) {
	while ($row = $stmt->fetch()) {
		$count = $row["count"];
	}
}

//Updateの実行
$stmt = $dbh->prepare("UPDATE ".DB_TABLE_NAME." SET count = ".$count." where keyword = ?");

if ( $stmt->execute(array($keyword)) ) {
	//成功
}else{
	//失敗
}

関連記事

no image

【php】基礎のPHP速習トレーニング

//インポート require_once dirname(__FILE__) . '/he

記事を読む

no image

【php】UserClassでアカウント管理を実装してみる

大抵のフレームワークにはアカウント管理のモジュールがあると思いますが、 「フレームワークを使う

記事を読む

no image

[php] プログラマ2年生がPHPUnit始めてみた

何度も挫折していたテスト自動化ですが、こちらのエントリーを読んで前に進めそうです。 3分でできる俺

記事を読む

no image

【php】メッセージをログファイルに吐いてデバッグする

javascriptであればfirebugで簡単にデバッグできるのですが、サーバー側で動くphpなど

記事を読む

Message

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

no image
知らないと損をする6つのライセンスまとめ

オープンソースやフリーウェア、フリー素材などが巷に溢れ、それらを利用す

no image
ガリレオ:ニュースブラウザをリリースしました。

概要 ガリレオはニュースを読んだり、検索する機能に特化したブラウザア

no image
【android】Activityとプロセスのライフサイクル

またもやライフサイクル周りでハマったのですが、Androidのライフサ

→もっと見る

PAGE TOP ↑