2012-04-24 99 views
0

我有這個功能,應該只在數據庫中查找與用戶輸入類似的名稱。但是我不能在參數中使用Like:uname。 大家看我在網上,他們建議我做這樣的事情Bindparam和Like查詢時的條件

$username = "$%username%"; 

然而,查詢不返回任何結果。

我知道數據庫是正確進行,因爲如果我問這個,它返回正確的答案

SELECT * FROM $schema.pessoa WHERE nome LIKE %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; 
} 

回答

0

它右看看我,

我只能建議你嘗試這種方式和看看有沒有什麼區別

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

編輯。

再次看它,這不看我的權利..

$username = '$%username%'; 

它不應該是

$username = '%'.$username.'%'; 
+0

都能跟得上抱歉,但它仍然無法正常工作。我不知道什麼是錯的。 – user697110 2012-04-27 14:46:05