我已经阅读了关于如何编写这些查询的多个示例,但我很难在使用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();
答案 0 :(得分:26)
不,您不需要内部单引号,只需要$term = "$term%";
您现在正在投放的声明会尝试匹配'a%'
而不是a%
bindParam将确保在给出SQL语句时自动正确引用所有字符串数据。
答案 1 :(得分:0)
您可以使用bindValue,假设您有一个 $ query =“搜索字符串”
$stmt->bindValue(':term', $query.'%'); // this will do like search for "search term XXXXX"
类似
$stmt->bindValue(':term', '%'.$query.'%');
或
$stmt->bindValue(':term', '%'.$query);