2013-04-27 18 views
25

でプリペアドステートメントをPDO準備されたステートメントで。は、私は、次のmysqlのクエリを実行したいワイルドカード

/edit

ありがとうございます。 bindValueとその作業:これは、代替可能性があり

$name = "%$name%"; 
$query = $dbh->prepare("SELECT * FROM `gc_users` WHERE `name` like :name"); 
$query->bindParam(':name', $name); 
$query->execute(); 
+3

- チェンジ ' bindParam'を 'bindValue'に変更し、[PDOのエラー報告]を有効にしてください。(0120-18753-0156) –

答えて

23

は、それはあまりにも仕方以下でバインドのparamで作業することができ、あなたの最初の試みについては

$className = '%' . $this->className . '%'; 
$query->bind_param('s', $className); 
+0

なぜこれがdow投票されましたが、このソリューションも機能することに注意してください。 :) – Sumoanand

+3

あなたの '$ name'にワイルドカード自体が含まれていて、それがエスケープされていないので、下線が引かれていると思います。 –

+1

私はDSNにcharset = utf8を持たずに時間を無駄にするので、タイ語の文字で検索します。 – ittgung

2

$stmt = $dbh->prepare("SELECT * FROM `gc_users` WHERE `name` LIKE :name"); 
$stmt->bindValue(':name', '%' . $name . '%'); 
$stmt->execute(); 
関連する問題