2010-10-25 118 views
5

爲了使用PDO進行LIKE搜索,我需要在傳遞參數之前將%添加到參數中。如何使用PDO進行LIKE搜索?

這工作:

$qry = ' 
    SELECT product_id 
    FROM cart_product 
    WHERE product_manufacturer_num LIKE :search_string 
'; 
$sth = $this->pdo->prepare($qry); 
$sth->execute(array("search_string"=>'%'.$search_string.'%')); 

對我來說,這種感覺更像是一個黑客,是否有這樣做的一個更正式的方式?

+0

重複的:http://stackoverflow.com/questions/583336/how-do-i-create-a-pdo-parameterized-query-with-a-like-statement-in-php/7357296#7357296 – Kzqai 2011-09-09 04:56:34

回答

4

這很好。它對我來說並不感覺像是黑客。

difficulty出現在您希望允許在搜索字符串中使用文字%_字符而不用作通配符的情況。

+0

我認爲綁定參數的很大一部分是爲PDO/SQL轉義爲%或_的東西......所以我很困惑。 – RonLugge 2012-07-18 05:13:25

+1

@RonLugge:PDO執行必要的轉義/參數化操作,以便將字符串文字導入數據庫。問題在於'LIKE'模式語法是一個獨立的層,位於SQL字符串文字之上。 MySQL通過對兩個層使用相同的轉義字符來混淆這個問題,但它們在概念上是無關聯的,在完全不同的層次上實現。 – bobince 2012-07-18 09:02:19