2
<?php
    $current = 0;
    $results = 5;
    $statement = $db->prepare("SELECT title, id FROM mytable LIMIT ?, ?");
    $statement->execute(array($current, $results));
?>

var_dump($statement);
=> public 'queryString' => string 'SELECT title, id FROM mytable LIMIT ?, ?' (length=39)

誰かがこれが機能しない理由を見つけるのを手伝ってもらえますか?

4

2 に答える 2

2

これらのパラメーターは、文字列ではなく整数としてバインドする必要があります(デフォルト)。パラメータを文字列としてバインドすると、パラメータの周囲に引用符が自動的に追加されます。

$statement->bindParam(":current", $current, PDO::PARAM_INT)

この例では、名前付きプレースホルダーを使用しています。とにかく使ってみることをお勧めします。

于 2012-06-02T15:08:15.553 に答える
1

プレースホルダーが指定された値に置き換えられた文字列を表示できるようにすることは、pdoが提供する機能ではありません。ただし、準備されたステートメントは値を使用して適切に実行されます。

pdos mysqlドライバーの場合、値の配列でexecute()を使用すると、limit句の一部の値をバインドするときに特殊性があります。PDOパラメータの配列を渡しながら、それらのタイプを指定するにはどうすればよいですか?を参照してください。

于 2012-06-02T15:08:54.590 に答える