dポイントプレゼントキャンペーン実施中!

http://d.hatena.ne.jp/Sybian/20070521/p1
のサイトの例のように、LIKE '%文字列%'
をprepareしようとしたのですが上手く結果が返りません。

PDOのプリペアステートメントは、
LIKEの部分一致や先頭一致に非対応なのでしょうか?

$query="SELECT * FROM table WHERE id=:id OR like name='%:name%'";

$pdo=new PDO('mysql:host=localhost;dbname=database','user','password');
$stmt=$pdo->prepare($query);
$stmt->bindValue(':id',$id,PDO::PARAM_INT);
$stmt->bindValue(':name',$name,PDO::PARAM_STR);
$stmt->execute();
return $stmt->fetchAll(PDO::FETCH_ASSOC);

A 回答 (1件)

http://jp2.php.net/manual/ja/ref.pdo.php

Example#11 プレースホルダの間違った使用法
を注意してよく見てください

つまり $name の中に %がなくてはいけません

$query="SELECT * FROM table WHERE id=:id OR like name= :name ";
にして
$name = "%文%";
にすれば良い
ってことです
    • good
    • 0
この回答へのお礼

大変わかりやすいご回答ありがとうございます。
私の先入観が間違いでした・・
マニュアル全部をさらっとでも目を通さないと駄目ですね(^^;)
同僚も方法がわからなかったようで、助かりました。

昨晩、別の同僚に聞いたところ、
彼もこれに嵌った経験があるようでした(^^;

お礼日時:2008/03/15 12:03

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!