我有这个功能,只需在数据库中查找与用户输入类似的名称。但是,我不能使用Like与param:uname。 我在网上看到的每个人都建议我做这样的事情
$username = "$%username%";
但是查询不会返回任何结果。
我知道数据库是正确制作的,因为如果我问这个,它会返回正确的答案
SELECT * FROM $schema.pessoa WHERE nome LIKE %Mike%
然而,在我的代码中,$ username包含“Mike”,但它没有返回任何内容,我认为%username没有正确制作,但是如果我回复它,它确实包含我想要的字符串 - “麦克风”。 所以问题似乎在于我用参数质疑它,但我不知道
function SearchUser($username) {
global $dbh, $schema;
try {
$username = "$%username%";
$stmt = $dbh->prepare("SELECT * FROM $schema.pessoa WHERE nome LIKE :uname");
$stmt->bindParam(':uname', $username);
$stmt->execute();
$result = $stmt->fetch(PDO::FETCH_ASSOC);
if(empty($result))
{echo 'empty';}
return $result;
}
catch(PDOException $e) {
$_SESSION["s_errors"]["generic"][] = "ERRO[32]: ".$e->getMessage();
header("Location: list.php");
die;
}
答案 0 :(得分:0)
它看起来对我来说,
我只能建议你这样试试,看看是否有任何区别
$username = 'Mike';
$stmt->bindValue(":uname", "%".$username."%");
编辑。
再看一遍,这对我来说并不合适..
$username = '$%username%';
不应该
$username = '%'.$username.'%';