FC2ブログ

CakePHPでトランザクション処理(メモ)

しばらく放置してあった作成中のアプリ、
時間が取れたので作成を進めることができました。

今日はCakePHPでトランザクション処理に挑戦しました。

MySQLのストレージエンジンがInnoDBである必要があるようです。
調べてみたら、私の使っているMySQL5.5は、InnoDBがデフォルト
のストレージエンジンになっているとの事。

さっそく試してみました。

まず、begin() commit() rollback()を作るみたいで、検索してみると
app_modelに作る方法があったのでそれを採用。

①cake/libs/model/app_model.phpをapp/models配下にコピーし、関数を追加
 function begin() {
  $dbs = & ConnectionManager::getDataSource($this->useDbConfig);
  $dbs->begin($this);
 }
 function commit() {
  $dbs = & ConnectionManager::getDataSource($this->useDbConfig);
  $dbs->commit($this);
 }
 function rollback() {
  $dbs = & ConnectionManager::getDataSource($this->useDbConfig);
  $dbs->rollback($this);
 }

②トランザクション処理を処理に追加
 ※呼び出しかたは、
  モデル->begin();
  モデル->commit();
  モデル->rollback();

これだけでした。。。

動かしてみたらちゃんと動いてました。

楽チンでした。
スポンサーサイト



CakePHPの1.3系書籍

書籍を読んでみたいと思い、調べてみました。
1.3系は少ないっす。

これを買ってみようと考え中


他はこんなのがあるようです。










SQL文中で用いる文字列の特殊文字をエスケープ

PHPでMySQLを使う場合、SQL文中で用いる文字列の特殊文字をエスケープするには、
mysql_real_escape_string()を使う。

その逆にクォートされた文字列のクォート部分を取り除くには、
stripslashes()を使う。

stripslashes()の使用に気づかなくてはまってしまいました。。。

mysql_real_escape_string() --- http://jp2.php.net/manual/ja/function.mysql-real-escape-string.php
stripslashes() --- http://php.net/manual/ja/function.stripslashes.php

mb_ereg_replace()を使って置換すると文字化けが発生

mb_ereg_replace()を使って置換を行った際、文字化けが発生。
結構はまっていろいろ調べた結果、正規表現用の文字コードを指定していなかった事が原因でした。

正規表現用の文字コードの指定は、「mb_regex_encoding()」で指定できます。
実際、以下のコードを追加したら文字化けしなくなりました。

 mb_regex_encoding(mb_internal_encoding());

mb_ereg_replace() --- http://jp.php.net/manual/ja/function.mb-regex-encoding.php

CakePHPでHTMLタグをエスケープする

CakePHPでHTMLタグをエスケープする方法のメモです。
CakePHPではh()という関数が用意されているそうで、これを使うとエスケープできました。

こんな感じ
■使い方
 <?php
  $text="<table><tr><td>あ</td><td>い</td><td>う</td></tr></table>";
  echo h($text);
 ?>
■表示
<table><tr><td>あ</td><td>い</td><td>う</td></tr></table>

ただ、このh()関数検索情報をみるかぎり、PHPのhtmlspecialchars()関数のエイリアスっぽいです。
PHPのHTMLタグエスケープは、「htmlspecialchars」と「htmlentities」があり、厳密なエスケープをするには「htmlentities」を使った方が良さそうとの事。
なので、htmlentities()を使うことにしました。

こんな感じ
 <?php
  $text="<table><tr><td>あ</td><td>い</td><td>う</td></tr></table>";
  echo htmlentities($text, ENT_QUOTES, mb_internal_encoding());
 ?>

詳細は以下マニュアルを参照してください。
◇htmlentities --- http://php.net/manual/ja/function.htmlentities.php
◇htmlspecialchars --- http://php.net/manual/ja/function.htmlspecialchars.php

プロフィール

romanesque

Author:romanesque
ソフトウェアの開発やら運用やらいろいろとやってきました。最近は世間で言うSE職とやらをやっています。

このブログでは、「気の向くまま」を基本コンセプトに思った事(仕事~趣味)を書いていこうと思っています。

最新記事
最新コメント
最新トラックバック
月別アーカイブ
カテゴリ
検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

QRコード
QR