2017-08-10 6 views
0

以下のコードを実行すると何も返されません。明示的に '?'の位置に文字列を入力すると、期待される結果が返されますが、準備されたバージョンを使用することはこれまでのところ私のためには機能しませんでした。私は、以前に私のために働いていたINSERTクエリのための準備されたステートメントを使用すると、バージョン管理の問題があるとは思わない。準備された声明では、ここで何が問題になるでしょうか?PHP SQLは何も返さないselectクエリを用意しました

$pdo = new PDO("mysql:host=localhost;dbname=database", $user, $pass); 
$sql = "SELECT * FROM table WHERE column LIKE '%?%';"; 
$stmt = $pdo->prepare($sql); 
$stmt->execute(array($_GET['searchterm'])); 
$results = $stmt->fetchAll(); 
print_r($results); 

答えて

0

クエリの内部に文字列を置いたように動作しないように、値を準備しています。

文字列を準備するときは、"または'を追加する必要はありません。エスケープする値に%を追加する必要があります。

$pdo = new PDO("mysql:host=localhost;dbname=database", $user, $pass); 
$sql = "SELECT * FROM table WHERE column LIKE ?;"; 
$stmt = $pdo->prepare($sql); 
$stmt->execute(array("%{$_GET['searchterm']}%")); 
$results = $stmt->fetchAll(); 
print_r($results); 
+1

完全に機能しました。振り返ってみると、なぜ私の最初の試みはうまくいかなかったのか理解しています。ありがとうございました。 –

関連する問題