2012-12-23 85 views
-4

可能重複:
How do I create a PDO parameterized query with a LIKE statement in PHP?什麼是正確的PDO的語法

我的SQL語句最初是這樣的:

"SELECT companyname, axiscategory 
FROM axispl WHERE companyname 
LIKE '$searchterm%' LIMIT 11" 

現在我想改變這PDO格式。我懷疑的是關於我在searchterm中使用的通配符(任何以......開始的)。我如何以PDO的形式實現這一點?

我寫了代碼,直到WHERE。那麼當寫作companyname =:...我被卡住了。

$query = $db->prepare("SELECT companyname, axiscategory 
FROM axispl WHERE companyname 
LIKE '$searchterm%' LIMIT 11"); 

回答

3

預處理語句執行,因爲他們分開查詢和參數都是有用的。連接現在是要忘記的事情。

$query = $db->prepare("SELECT companyname, axiscategory 
    FROM axispl WHERE companyname 
    LIKE :searchterm LIMIT 11"); 

$query->bindValue('searchterm',$searchterm.'%'); 
$query->execute(); 
//then to fetch the results 
$query->fetch(PDO::FETCH_ASSOC); 

這裏我用命名的參數,因爲它們更容易閱讀,但你也可以使用索引參數那樣:

$query = $db->prepare("SELECT companyname, axiscategory 
    FROM axispl WHERE companyname 
    LIKE ? LIMIT 11"); 

$query->bindValue(1,$searchterm.'%'); 
$query->execute(); 
1
$query = $db->prepare("SELECT companyname, axiscategory 
         FROM axispl 
         WHERE companyname LIKE ? 
         LIMIT 11"); 

然後你使用$query->execute(array($searchterm.'%'));