11327


以下のコードを書きましたが、エラーになってしまいます。  
$maxResultと$pageにはデータが入っていることが確認できています。さらに、パラメータを指定せずにリクエストを送るとデータを取得できます。どこが間違っているかわかりますか?
よろしくお願いします。

[code]

    if(isset($_GET['maxResult']))
      $maxResult = $_GET['maxResult'];
    if(isset($_GET['page']))
      $page = $_GET['page'];
    $st = $pdo->prepare("SELECT * FROM `hogehoge` ORDER BY `id` DESC LIMIT :page, :limit");
    $st->bindValue(":page", $page, PDO::PARAM_INT);
    $st->bindValue(":limit", $maxResult, PDO::PARAM_INT);
    if($st->execute()){
      echo json_encode($st->fetchAll(PDO::FETCH_ASSOC));
    }else{
      sendError("failure");
    }
    
[/code]


CC BY-SA 3.0
2015-06-14T09:25:14.557
11326
2015-06-14T12:40:17.067
2015-06-14T12:40:17.067
3639
7232
question
php mysql pdo
PDOのLIMITでエラー


以前同じ挙動でハマった事がありますが、LIMIT句へのバインドは整数型でなければならなかったはずです。  
PDO::PARAM_INTも必要ですが、$_GETや$_POSTで取得したパラメータは文字列として変数に格納されますので、

bindValue(":page", (int)$page,
PDO::PARAM_INT)やintvalを使って整数型へキャストさせると取得出来るかと思われます。


CC BY-SA 3.0
2015-06-14T10:35:33.687
11327
2015-06-14T10:35:33.687
4271
11326
answer