2014-04-28 60 views
1

下面是我創建的搜索功能,據我可以告訴我沒有做任何不正確的事情,但我沒有返回搜索結果。我知道,例如str是「邪惡」,當我更換:STR與「%惡%」我得到預期的結果,因此它爲什麼不工作時,我使用bindValue有PDO陳述問題不包含應該在那裏

function get_items($str) { 
try{ 
    $db = db_open(); 
    $sql = "select jobs.* from jobs, employers where employers.employer = jobs.employer "; 
    if ($str) { 
     $sql .= "AND jobs.title LIKE :str "; 
    } 
    $sql .= "order by id"; 
    $str = trim($str); 
    $statement = $db->prepare($sql); 
    $statement->bindValue(':str', '$' . $str . '$'); 
    $statement->execute(); 
    echo($str);  
    $items = $statement->fetchAll(); 
    return $items; 
} catch (PDOException $e) { 
    die("Error: " . $e->getMessage()); 
} 
} 

編輯:會出現IM,而累了,並混淆了我正在使用什麼符號

+1

爲什麼你周圍的''與$'字符str'而不是'%單曲? – Mureinik

+0

謝謝你在這個項目上度過這個週末之後看到了我無法想象的東西-_-我現在覺得很傻 –

+1

一旦你盯着一段代碼足夠長的時間,你就完全失去了它的錯誤(參見例如http:// en.wikipedia.org/wiki/Inattentional_blindness) – Mureinik

回答

1

您正在使用$字符而不是%字符包圍您的str。相反的:

$statement->bindValue(':str', '$' . $str . '$'); 

你應該有:

$statement->bindValue(':str', '%' . $str . '%');