CakePHP バージョン1.3.7です。
CakePHPでqueryを使ってSQL文を書くときなんですが
公式サイトに以下のように
App::import('Sanitize');
$sql = "SELECT * FROM users WHERE id = $id";
$sql = Sanitize::clean($sql);
サニタイズをしなさいとありますが、
上記の$idの部分がdate型で
$sql = "SELECT * FROM users WHERE date = '2011-05-16'";
みたいなときシングルクオートがエスケープされてクエリが通らないのはどうやって解決すればいいんでしょうか?
No.1ベストアンサー
- 回答日時:
$sql = Sanitize::clean($sql,array(
'encode'=>false
));
第二引数でencodeをfalseにしてしまいましょう。
ちなみに俺はこう書いてます。
$sql = "SELECT * FROM users WHERE date = :date";
$params = array(
'date'=>'2011-05-16'
);
$result = $this->Model->query($sql,$params);
ご返事ありがとうございます!!
できました!
一つ目の 'encode'=>false だとクエリが ¥'2011-05-16¥'
となってしまい。通らなかったのですが、二つ目の方法で、記述するとできました!
記述があっているかどうかわからないですが、
$sql = "SELECT * FROM users WHERE date = :date";
$sql = Sanitize::clean($sql);
$params = array(
'date'=>'2011-05-16'
);
$result = $this->Model->query($sql,$params);
という順番で記述しました。
URLに日付のパラメータを振ってたのですが、そこにシングルクオートを入れても、上記の方法でちゃんとエスケープされます。
勉強不足で恥ずかしいのですが、この記法知らなかったです。。。
プレースホルダみたいな感じなのでしょうか?
今から調べてみたいと思います。
ほんとうにありがとうございました!!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Oracle sqlで質問です。 aテーブルとbテーブルがあり、下記のsqlで取得したidとnameに一致しないレ 1 2022/04/20 20:34
- MySQL 書籍の内容はまともでしょうか? 1 2023/01/22 03:07
- MySQL SQLです。下記の問合せを行うクエリを、PhpMyAdminで作成して実行せよ。 「昨年の各月の総降 1 2023/07/01 00:32
- Access(アクセス) アクセス 有効なフィールド名、または式として認識できませんのエラー 3 2022/08/19 11:53
- PHP Q&Aサイトを作成していてURLの生成方法について迷っているのでアドバイスお願い致します 1 2023/08/10 16:42
- MySQL SQLです。こんな感じですか?あってますか? うまくいきません教えてくださいお願いします 1 2023/07/08 15:27
- SQL Server [SQLServer] テーブル名からカラム名を取得する 1 2022/08/23 21:20
- MySQL 下記の問合せを行うクエリを、PhpMyAdminで作成して実行せよ。 日本の全市区町村を人口密度が低 1 2023/06/18 19:51
- MySQL PhpMyAdminで作成して実行せよ。 東京23区を、皇居を中心とした4つのエリア(南東, 南西, 1 2023/06/11 11:58
- PHP PHP MySql ページング 2 2022/09/20 06:38
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Pro*Cの構文エラー
-
VB.NET エラーになる箇...
-
Q&Aサイトを作成していてURLの...
-
PHP&MySQLでの文字列+数列の一...
-
ResultSetインターフェイスでの...
-
CakePHPとMySqlを使用していま...
-
PHPでMySQLのテーブルからcount...
-
データベースに存在するデータ...
-
insert1つの処理でもトランザ...
-
<VB.NET>INSERT文でDBにデータ...
-
実行時エラー3131 FROM 句の構...
-
エクセルVBAについて
-
VBAをつかってクエリの情報を抽...
-
php データ削除
-
円マークが付加されて保存され...
-
MySQLでデータベースにデータin...
-
DBで検索結果に該当するデータ...
-
テキストボックスに入れた内容...
-
テーブルに入っているデータと...
-
Resource id #3 をフィールドの...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
JAVA SQLServerException 列名 ...
-
Q&Aサイトを作成していてURLの...
-
<VB.NET>INSERT文でDBにデータ...
-
insert1つの処理でもトランザ...
-
Pro*Cの構文エラー
-
ResultSetインターフェイスでの...
-
データベースに存在するデータ...
-
PHP&MySQLでの文字列+数列の一...
-
VBA ACCESS SQL...
-
phpで複数の検索語を検索対象に...
-
like検索の複数キーワードで、...
-
MySQLのINSERT時にたまに重複に...
-
C# で発生したException.Messag...
-
PHP+PDO+MYSQL で実行されたSQ...
-
PHPのUndefined index や varia...
-
INSERT,DELETEを同時に
-
配列をループさせてUPDATE
-
VB.NET エラーになる箇...
-
php postgres Insert と updat...
-
C#でDBの特定列をUpdate
おすすめ情報