Использование LIKE в bindParam для MySQL PDO Query
Я прочитал несколько примеров того, как эти запросы должны быть написаны, но я изо всех сил стараюсь, чтобы это было похоже на запуск при использовании 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();
Ответы
Ответ 1
Нет, вам не нужны внутренние одинарные кавычки, поэтому просто $term = "$term%";
Заявление, которое вы сейчас используете, будет пытаться сопоставить 'a%'
вместо a%
bindParam будет следить за тем, чтобы все строковые данные автоматически указывались при выдаче инструкции SQL.
Ответ 2
Вы можете использовать bindValue, предположим, у вас есть $ query = "строка поиска"
$stmt->bindValue(':term', $query.'%'); // this will do like search for "search term XXXXX"
так же
$stmt->bindValue(':term', '%'.$query.'%');
или же
$stmt->bindValue(':term', '%'.$query);