2012-12-23 86 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.'%'));