2

我正在尝试使用学说运行本机 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

我已经引用了数据检索和操作,其中有一个关于quote()函数的部分,但它对细节很害羞。

4

1 回答 1

2

尝试 :

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

在此处查看源代码:

 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:     );
于 2013-01-14T17:50:50.783 回答