2016-05-16 131 views
1

可以说我有以下变量:使用变量值作为一个WHERE语句PDO查询中

$where = "where `hats`='red'"; 

我想这个变量注入到一个PDO声明。这样做的正确方法是什么?

是不是像这样?:

$sql = "select * from `clothing` :where"; 
$stm = $this->app->db->prepare($sql); 
$stm->bindParam(':where', $where); 
$stm->execute(); 

任何帮助将不胜感激。

回答

0

您只能绑定,而不是关键字,对象名称或语法元素。例如,如果你总是根据hats查询,你可以绑定'red'值:

$color = 'red'; 
$sql = "select * from `clothing` where hats = :color"; 
$stm = $this->app->db->prepare($sql); 
$stm->bindParam(':color', $color); 
$stm->execute(); 

如果您where子句是真的那么有活力,你不得不诉诸字符串操作(和面临的风险SQL注入,不幸):

$where = "where `hats`='red'"; 
$sql = "select * from `clothing` $where"; 
$stm = $this->app->db->prepare($sql); 
$stm->execute(); 
+0

为什么downvote? – Mureinik

+0

我把upvoted甚至你。我同意,我正在建立一个动态的声明,我想我唯一的选择是直接注入它。 – kjdion84

-1

//你的连接文件

创建名字$ PDO一个新的PDO对象在你的函数

function nameOfFunction($var,$value) 
    { 
    global $PDO; 
    $st=$PDO->prepare('SELECT * from clothing WHERE ? = ?'); 
    $rs=$st->execute(array($var,$val)); 
    return $st->fetchAll(); 
    } 

我希望它能起作用。它会返回数组,遍历它,只要你喜欢

相关问题