Zend_Db_Statement の LIMIT 句の挙動

Zend_Db_Statement で LIMIT 句をプレイスホルダーにした場合の挙動が良くわからない。

<?php
$id = 1;
$limit = 10;
$sql = 'SELECT * FROM statuses where user_id = ? LIMIT ?';
// $this->_db は Zend_Db_Adapter_Pdo_Mysql オブジェクト
$stmt = $this->_db->query($sql, array($id,  $limit));
$rows = $stmt->fetchAll();

上記なようなコードを実行した場合、以下のようなエラーが発生する。

SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''10'' at line 1

このエラー元を追って行ったら、Zend_Db_Statement_Pdo() の以下の _execute() メソッドで発生している。
該当箇所のコードを見てみた。

<?php
try {
    if ($params !== null) {
        return $this->_stmt->execute($params);
    } else {
        return $this->_stmt->execute();
    }        
} catch (PDOException $e) {
    require_once 'Zend/Db/Statement/Exception.php';
    throw new Zend_Db_Statement_Exception($e->getMessage());
}

$this->_stmt は PDOStatement のオブジェクトで、execute メソッドを呼んでいる。
Zend Framework で発生しているのではなく、PDO で発生しているのが分かった。


LIMIT 句をプレイスホルダーを使わずに直接 LIMIT 10'; の様に記述すると、
正しく実行できし、user_id = ? の部分は正しく変換される。
PDO の不具合か仕様か検索したけど分からなかった。
知ってる方が居たら教えて下さい。


ちなみに、以下のように quoteInto() を使用してそれぞれクォートすれば結果は取得できた。

<?php
$id = 1;
$limit = 10;
$sql = 'SELECT * FROM statuses where user_id = ?';
$sql    = $this->_db->quoteInto($sql, $id, 'INTEGER');
$limit  = $this->_db->quoteInto(' LIMIT ? ', $limit, 'INTEGER');

// $this->_db は Zend_Db_Adapter_Pdo_Mysql オブジェクト
$stmt = $this->_db->query($sql . $limit);
$rows = $stmt->fetchAll();

こんな解決方法でいいのかな・・・。