
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を探す
今、見られている記事はコレ!
-
弁護士が語る「合法と違法を分けるオンラインカジノのシンプルな線引き」
「お金を賭けたら違法です」ーーこう答えたのは富士見坂法律事務所の井上義之弁護士。オンラインカジノが違法となるかどうかの基準は、このように非常にシンプルである。しかし2025年にはいって、違法賭博事件が相次...
-
釣りと密漁の違いは?知らなかったでは済まされない?事前にできることは?
知らなかったでは済まされないのが法律の世界であるが、全てを知ってから何かをするには少々手間がかかるし、最悪始めることすらできずに終わってしまうこともあり得る。教えてgooでも「釣りと密漁の境目はどこです...
-
カスハラとクレームの違いは?カスハラの法的責任は?企業がとるべき対応は?
東京都が、客からの迷惑行為などを称した「カスタマーハラスメント」、いわゆる「カスハラ」の防止を目的とした条例を、全国で初めて成立させた。条例に罰則はなく、2025年4月1日から施行される。 この動きは自治体...
-
なぜ批判コメントをするの?その心理と向き合い方をカウンセラーにきいた!
今や生活に必要不可欠となったインターネット。手軽に情報を得られるだけでなく、ネットを介したコミュニケーションも一般的となった。それと同時に顕在化しているのが、他者に対する辛らつな意見だ。ネットニュース...
-
大麻の使用罪がなかった理由や法改正での変更点、他国との違いを弁護士が解説
ドイツで2024年4月に大麻が合法化され、その2ヶ月後にサッカーEURO2024が行われた。その際、ドイツ警察は大会運営における治安維持の一つの方針として「アルコールを飲んでいるグループと、大麻を吸っているグループ...
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
insert1つの処理でもトランザ...
-
一度検索されたものに対するソ...
-
Pro*Cの構文エラー
-
PHP&MySQLでの文字列+数列の一...
-
MySQLでWHERE条件が効かない
-
VB.NET SQL SERVER COMPACT...
-
VBA ACCESS SQL...
-
<VB.NET>INSERT文でDBにデータ...
-
PHPのSQL文のデバッグ方法とコ...
-
zendframework
-
PHP+PDO+MYSQL で実行されたSQ...
-
PHP4とORACLE接続について
-
配列で受け取った値がUPDATEで...
-
ResultSetインターフェイスでの...
-
データベースに存在するデータ...
-
データに「,」があると「"」で...
-
PHPでいいね機能を作りたいので...
-
テキストボックスに入れた内容...
-
SQLiteのデータベースについて
-
OracleからAccessへのインポート
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
<VB.NET>INSERT文でDBにデータ...
-
JAVA SQLServerException 列名 ...
-
insert1つの処理でもトランザ...
-
【初歩】配列の格納データ数だ...
-
Pro*Cの構文エラー
-
データベースに存在するデータ...
-
VBA ACCESS SQL...
-
ODBC接続でデータ件数を求...
-
MySQLのINSERT時にたまに重複に...
-
mysqliを使ってデータベースを...
-
エクセルVBAのデータベース接続...
-
VB.NET エラーになる箇...
-
Q&Aサイトを作成していてURLの...
-
配列をループさせてUPDATE
-
条件が合わなかった場合の処理...
-
SQL文の連結が、うまくいきません
-
PHPからSQLite3のUPDATEができ...
-
PHP+SQLite でSELECT文のWHERE...
-
cakePHPでSQLが実行できない。
-
INSERT,DELETEを同時に
おすすめ情報