これらのクエリの記述方法に関する複数の例を読みましたが、bindParam
を使用するときに、この特定のクエリを実行するのに苦労しています
これは、aで始まるユーザー名を照合する正しい方法でしょうか?
$term = "a";
$term = "'$term%'";
$sql = "SELECT username
FROM `user`
WHERE username LIKE :term
LIMIT 10";
$core = Connect::getInstance();
$stmt = $core->dbh->prepare($sql);
$stmt->bindParam(':term', $term, PDO::PARAM_STR);
$stmt->execute();
$data = $stmt->fetchAll();
いいえ、内側の一重引用符は必要ないので、$term = "$term%";
現在実行しているステートメントは、'a%'
ではなくa%
に一致しようとします
bindParamは、SQLステートメントに渡されたすべての文字列データが自動的に適切に引用符で囲まれるようにします。
$ query = "search string"があるとすると、bindValueを使用できます。
$stmt->bindValue(':term', $query.'%'); // this will do like search for "search term XXXXX"
同様に
$stmt->bindValue(':term', '%'.$query.'%');
または
$stmt->bindValue(':term', '%'.$query);