7

que_id次の SQL を使用して、テーブルの特定の行のフィールドの値を取得しましたが、正常に動作しています。que_id(auto-incremented) と行番号は同じではないことに注意してください。

$qry_que_getid = $connexion->query('SELECT somefield FROM table ORDER BY somefield ASC LIMIT '.$lineNumberSeeked.', 1');

$row = $qry_que_getid->fetch(PDO::FETCH_ASSOC); 
echo $row['que_id'];

次のようにそのクエリを準備済みクエリに変換しようとすると、エラーが発生し、取得できません。

$qry_que_getid = $connexion->prepare('SELECT somefield FROM table ORDER BY somefield ASC LIMIT ?, 1');

$qry_que_getid->execute(array(4));

$row = $qry_que_getid->fetch(PDO::FETCH_ASSOC); 
echo $row['que_id'];

次のエラーが表示されます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 ''3', 1' at line 1

誰かが私を理解するのを手伝ってくれることを願っています。前もって感謝します。乾杯。マーク。

4

1 に答える 1

4

http://www.php.net/manual/en/pdostatement.execute.phpのPHPマニュアルから:

実行中のSQLステートメントにバインドされたパラメーターと同じ数の要素を持つ値の配列。すべての値はPDO::PARAM_STRとして扱われます。

LIMIT句は私が信じる整数を期待しているので、代わりにbindParam()メソッドを使用する必要があります。

$limit = 4;
$qry_que_getid->bindParam(1, $limit, PDO::PARAM_INT);
$qry_que_getid->execute();

それ以外の場合、パラメーターは、予期されたPDO :: PARAM_INTではなく、タイプPDO::PARAM_STRとして渡されます。

于 2012-05-07T16:37:34.297 に答える