PHP Symfony2 Doctrine PDO_PGSQL绑定变量

时间:2016-10-15 20:21:02

标签: php postgresql symfony pdo doctrine-orm

我的PHP代码中有这个查询:

select * from book where title ~* '\mkeyword'; /* \m matches only at the beginning of a word */

关键字是用户输入。如何重写查询以使用绑定变量? 当我这样做时:

select * from book where title ~* :keyword;

然后:

$stmt->bindValue('keyword', "\m".$keyword);

准备声明后, 我在查询中得到了\\ m,查询将无法按照我想要的方式运行。

1 个答案:

答案 0 :(得分:0)

对于名为:keyword的参数,您还必须使用相同的名称 - 包括冒号,请参阅PDOStatement::bindValue的示例部分

$sth = $dbh->prepare('SELECT name, colour, calories
    FROM fruit
    WHERE calories < :calories AND colour = :colour');
$sth->bindValue(':calories', $calories, PDO::PARAM_INT);
$sth->bindValue(':colour', $colour, PDO::PARAM_STR);

所以在你的情况下,它应该是

$stmt->bindValue(':keyword', "\m" . $keyword);

作为替代方案,您还可以将数组提供给PDOStatement::execute

$stmt->execute(array(':keyword' => "\m" . $keyword));