2

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()

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 に答える