プログラミング言語や環境設定を中心としたパソコン関連の技術メモです。
主にシステム開発中に調べたことをメモしています。TIPS的な位置付けで、気が向いたときにちまちま更新していきます。
CakePHP1.3系、queryメソッドでbindっぽいことができるらしい
うん、まぁ、タイトル通りなのですけどね。

CakePHPのqueryメソッドを使う際にはbindっぽい形で値を設定できるみたいです。

使い方は簡単で、クエリの中の値に置き換えたいところを「?」にして、
あとはqueryメソッドの第2引数として、置き換えたい値を配列で渡します。

このページを見るような方だったら、実際のコードを見た方が早いですよね。
例えば、こんな感じですφ(--)

<?php

//SQL文
$query = "";
$query = $query . "SELECT ";
$query = $query . "    tbl1.column1 ";
$query = $query . "    ,tbl1.column2 ";
$query = $query . "FROM ";
$query = $query . "    T_TBL1 tbl1 ";
$query = $query . "WHERE ";
$query = $query . "    key1 = ? ";
$query = $query . "AND ";
$query = $query . "    key2 = ? ";

//bindする値
$param = array('param1', 'param2');

$this->Model->query($query, $param, false);

そうすると、実際にはこんなSQL文が発行されますφ(--)

SELECT
    tbl1.column1
    ,tbl1.column2
FROM
    T_TBL1 tbl1
WHERE
    key1 = 'param1'
AND
    key2 = 'param2'

ちなみに、query()メソッドの第三引数の「false」は「キャッシュすんな!」の指定です。

使い方としては、それだけです。
もちろん、Where句以外にも使えますよ。

そもそもquery()メソッドを使う機会自体あまり多くないので今までお世話になりませんでしたが、
必要なエスケープ処理を勝手にやってくれるっぽいのがありがたいです。

本当はCakePHPさんが用意している関数(find()とかsave())とかで何とかした方が良いのでしょうけどね。
SQL文を直接書く方が楽な方は覚えておくと便利だと思います。

そんな感じ\(--)/
スポンサーリンク
 
このエントリーをはてなブックマークに追加 

category:CakePHP1.3系  thema:システム開発 - genre:コンピュータ  Posted by ササキマコト