在PDO查询中使用变量值作为where语句

时间:2016-05-16 06:05:56

标签: php mysql pdo

假设我有以下变量:

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

我想将此变量注入PDO语句。这样做的正确方法是什么?

是这样吗?:

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

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:1)

您只能绑定,而不能绑定关键字,对象名称或句法元素。例如,如果您始终根据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();

答案 1 :(得分:-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();
   } 

我希望它能奏效。它将返回数组,按您喜欢的方式遍历它