20

これらのクエリをどのように書くべきかについて複数の例を読みましたが、これを使用するときに実行するように特定するのに苦労していますbindParam

これは、で始まるユーザー名を照合する正しい方法でしょうか?

$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();
4

2 に答える 2

32

いいえ、内側の一重引用符は必要ないので、$term = "$term%";

'a%'現在実行しているステートメントは、代わりに一致しようとしますa%

bindParamは、SQLステートメントに指定されたときに、すべての文字列データが自動的に適切に引用されるようにします。

于 2012-06-17T01:35:33.633 に答える
4

$ 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);
于 2019-04-15T01:24:53.237 に答える