【PHP/SQL】プリペアドステートメントでLIKEを含むSQLを発行する時の%の扱いについて

PHPからMySQLやSQLiteに対してSQL文を発行するときは大抵PDOなどのデータベース抽象化モジュールを使うと思います。

さらにはSQLインジェクションの脆弱性を考慮し、プリペアドステートでSQLを発行するかと思います。

今回はそのプリペアドステートメントを発行する時にSQLにLIKEを入れる場合に部分一致をさせるための%の扱いでハマったことがあったのでちょっと書き残したいと思います。

書いていた処理をすべてのせる事はしませんが、以下のような処理を書いた時にうまく部分一致で引っ掛けることができませんでした。



これはそもそもの使い方が間違っています。

正しくは



とするのが正しいですね。

どうやら

http://www.php.net/manual/ja/pdo.prepare.php

によると

SQL ステートメントは、文が実行されるときに実際の値に置き換えられる 0 個もしくはそれ以上の名前 (:name) もしくは疑問符 (?) パラメータマークを含むことができます。



とのことなので%などはステートメントに含めることができないということですね。

普段あんまりLIKEを使用しないのでうっかりハマってしまいましたが、結構常識的なことっぽいので恥ずかしですが、書き残しておきます。
スポンサーサイト

役に立ったと思ったら下記をクリックお願いします。

今後の更新の励みになります。

にほんブログ村 IT技術ブログ IT技術メモへ

にほんブログ村 IT技術ブログへ

不定期ですが技術ネタを共有して行きますのでもしよろしければ購読いただければと思います

follow us in feedly

スポンサーリンク

テーマ : プログラミング
ジャンル : コンピュータ

Tag:PHP  Trackback:0 comment:2 

Comment

 |管理人のみ閲覧できます
# 2012.04.09 Mon18:45
このコメントは管理人のみ閲覧できます
 |承認待ちコメント
# 2012.10.16 Tue06:35
このコメントは管理者の承認待ちです
comment form
(編集・削除用):
管理者にだけ表示を許可
プロフィール

6rats

Author:6rats
こんにちは、ITベンチャーで働くエンジニアです
主に自分の周りで起きた技術的なことをメモとして書き残して行きます。
Android以外にもRuby/Ruby on RailsやFuelPHPなどなどたまにやります。基本的なスタンスとしては興味があるもしくは必要になったらいろんなことにチャレンジします。
最近はiOSアプリ開発を始めています。

購読
follow us in feedly
個人プロダクト

Androidアプリ

Twitterクライアント

Webアプリケーション

EcPriceWatch(Amazon価格の推移を計測、最安値を知らせるサービス)
Google AdSense
ブログ村
にほんブログ村 IT技術ブログへ
にほんブログ村
ブロとも申請フォーム

この人とブロともになる