0

我有这个函数,它应该只在数据库中查找与用户输入相似的名称。但是我不能将 Like 与参数 :uname 一起使用。我在网上看到的每个人都建议我做这样的事情

$username = "$%username%";

但是查询不返回任何结果。

我知道数据库是正确创建的,因为如果我问这个,它会返回正确的答案

SELECT *  FROM $schema.pessoa WHERE nome LIKE %Mike%

但是,在我的代码中 $username 包含“Mike”,但它没有返回任何内容,我认为 %username 没有正确制作,但是如果我对其进行回显,它确实包含我想要的字符串 - “Mike”。所以问题似乎出在我用参数质疑它的方式上,但我不知道

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;
}
4

1 回答 1

0

在我看来确实不错

我只能建议您尝试这种方式,看看是否有什么不同

$username = 'Mike';    
$stmt->bindValue(":uname", "%".$username."%");

编辑。

再看一遍,我觉得不太对劲。。

$username = '$%username%';  

难道不应该

$username = '%'.$username.'%';
于 2012-04-26T15:55:39.297 回答