2014-11-20 68 views
3

我正在測試一個小型搜索功能:PDO - 在bindParam中使用LIKE

但是我遇到了一個我似乎無法解決的錯誤。你可以看到PDO查詢這裏:

$search = "test1"; //later to be changes to $_POST ['search']; 

$sql = "SELECT id, name FROM clients WHERE name LIKE CONCAT('%',:name,'%')"; 
$stm = $db->prepare ($sql); 
$stm->bindParam (":name", $search); 
$stm->execute(); 
$result = $stm->fetchAll(); 

正如你所看到的,我想要綁定的參數%:名稱%從我的查詢,但我不知道是否這實際上可能嗎?

我revieve錯誤:未捕獲的異常「PDOException」有消息「SQLSTATE [42000]:.....

而且我可以在錯誤看到‘’已經把周圍的測試1%​​」測試1' %

正是我想要的可能,還是我需要做這樣的事情?

$query = "SELECT id, name FROM clients WHERE name like :name order by id LIMIT 5"; 

$sql->execute(array(":name" => "%" .$search . "%")); 
+0

這個問題已經有答案了結帳的URL。 http://stackoverflow.com/questions/11068230/using-like-in-bindparam-for-a-mysql-pdo-query – jamseernj 2014-11-20 23:22:01

+2

你拼寫WHERE爲'WHERE'。 – duskwuff 2014-11-20 23:23:03

回答

5

使用

LIKE CONCAT('%', :name, '%') 
+0

當我看到你的回答時,我想:啊,是的!但是,我仍然遇到錯誤。我用你的代碼更新了我的查詢。難道我做錯了什麼? – Adnaves 2014-11-20 23:23:48

+0

@Adnaves什麼是錯誤? – Mihai 2014-11-20 23:24:30

+1

Woops。原來這只是一個拼寫錯誤! :) 謝謝你的幫助。 – Adnaves 2014-11-20 23:25:19