在bindParam中使用LIKE进行MySQL PDO查询

时间:2012-06-17 01:18:06

标签: php mysql database pdo

我已经阅读了关于如何编写这些查询的多个示例,但我很难在使用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();

2 个答案:

答案 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);