2012-12-12 191 views
4

我有一個SQL查詢是這樣的:如何在PDO準備語句中使用LIKE子句?

SELECT * FROM tbl_name WHERE title Like "%:needle%" 

當我查詢MySQL數據庫手動與此聲明它的工作原理。但是,當我使用它與PDO和相同的值爲:針我手動查詢它只是返回一個空的結果集。

utf8編碼會影響它的行爲嗎?

回答

7

隨着PDO,這可以像做:

$stmt = $db->prepare("SELECT * FROM tbl_name WHERE title LIKE :needle"); 
$needle = '%somestring%'; 
$stmt->bindValue(':needle', $needle, PDO::PARAM_STR); 
$stmt->execute(); 
$rows = $stmt->fetchAll(PDO::FETCH_ASSOC); 
1

的 '%' 必須在變量,而不是語句。 把'%'放在變量中,你應該沒問題。

'SELECT * FROM tbl_name WHERE title Like ":needle"' 

$needle = "%$needle%"; 
5

嘗試像

$sql = 'SELECT * FROM tbl_name WHERE title Like ":needle"'; 

$prep = $dbh->prepare($sql); 

$ret = $prep->execute(array(':needle' => '%'.$somestring.'%'));