【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{ //失敗 }
関連記事
-
-
【php】基礎のPHP速習トレーニング
//インポート require_once dirname(__FILE__) . '/he
-
-
【php】メッセージをログファイルに吐いてデバッグする
javascriptであればfirebugで簡単にデバッグできるのですが、サーバー側で動くphpなど
-
-
[php] プログラマ2年生がPHPUnit始めてみた
何度も挫折していたテスト自動化ですが、こちらのエントリーを読んで前に進めそうです。 3分でできる俺
-
-
【php】UserClassでアカウント管理を実装してみる
大抵のフレームワークにはアカウント管理のモジュールがあると思いますが、 「フレームワークを使う