如何阻止Doctrine引用数字?

时间:2013-01-14 17:35:29

标签: php mysql doctrine-orm

我正在尝试使用doctrine运行本机SQL查询,并且遇到问题时引用了我查询的LIMIT部分的数字。

    $offset = $pageNumber * self::$limit;

    $sql = "
        SELECT * FROM devices LIMIT :offset, :limit
    ";
    $stmt = self::getEntityManager()->getConnection()->prepare($sql);
    $stmt->bindValue("offset", $offset);
    $stmt->bindValue("limit", self::$limit);
    $stmt->execute();
    $result = $stmt->fetchAll();

生成:

SELECT * FROM devices LIMIT '0', '5000'

哪个无效。 我有点难以理解如何改变它以产生

SELECT * FROM devices LIMIT 0, 5000

我引用了data-retrieval-and-manipulation,其中有一个关于quote()函数的部分,但它对细节很羞怯。

1 个答案:

答案 0 :(得分:2)

尝试:

$stmt->bindValue("offset", $offset, PDO::PARAM_INT);

请参阅来源here

 28: class MysqliStatement implements \IteratorAggregate, Statement
 29: {
 30:     protected static $_paramTypeMap = array(
 31:         PDO::PARAM_STR => 's',
 32:         PDO::PARAM_BOOL => 'i',
 33:         PDO::PARAM_NULL => 's',
 34:         PDO::PARAM_INT => 'i',
 35:         PDO::PARAM_LOB => 's' // TODO Support LOB bigger then max package size.
 36:     );