Pdo-> prepare,bindParam不起作用

时间:2017-07-01 23:42:58

标签: php mysql pdo

我尝试执行下面的代码但是当我尝试var_dump $query时,我有下一个:{ ["queryString"]=> string(44) "SELECT * FROM帖子WHERE :where LIMIT 15;" }

代码:

$query = Main::$data_base->pdo->prepare(

    'SELECT ' . $fields . ' ' .
    'FROM `posts` ' .
    'WHERE :where ' .
    'LIMIT ' . $posts_quantity . ';'
);

$query->bindParam( ':where', $where, PDO::PARAM_STR );

$query->execute();

1 个答案:

答案 0 :(得分:0)

必须使用键值对进行绑定:

正确:

where a=:value

在哪个值当然可以是任何名称(不要在未来的开发人员的礼貌中使用保留的关键字)。

不允许使用参数绑定替换完整部分的查询:

where :my_where_clause

:my_where_clause不允许a=b。这样做的原因是参数绑定是针对那些在该时间点立即转义以防止SQL注入的参数,这是my_where_clause方法无法实现的。