假设我有以下变量:
$where = "where `hats`='red'";
我想将此变量注入PDO语句。这样做的正确方法是什么?
是这样吗?:
$sql = "select * from `clothing` :where";
$stm = $this->app->db->prepare($sql);
$stm->bindParam(':where', $where);
$stm->execute();
非常感谢任何帮助。
答案 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();
}
我希望它能奏效。它将返回数组,按您喜欢的方式遍历它