2012-03-10 13 views
0

ページネーションにいくつか問題があります。私はデータベースコンソールで直接クエリを実行し、正常に動作します。MySQLでPDOを使用したページネーション

public function method($arg, $db)//$db is a PDO connection link 
{ 
    try 
    { 
     $next = $arg * 9; 
     $top = 9; 
     $sql = "SELECT col01, col02, col03 "; 
     $sql .= "FROM table "; 
     $sql .= "ORDER BY col01 ASC "; 
     $sql .= ($next === 0)? "LIMIT ".$top : "LIMIT ".$next.", ".$top;  
     $return = $db->prepare($sql); 
     $return->execute(); 

     $return->setFetchMode(PDO::FETCH_ASSOC); 
     $this->minis = $return->fetch(); 
     return true; 
    } 
    catch(PDOExcepction $e) 
    { 
     return false; 
    } 
} 

私は間違っていますか?

+0

最後の連結後に$ sqlをエコーすると...何が印刷されますか? –

+0

これは、結果を取得するクエリをテストするために行った最初のことでした。SELECT col01、col02、col03 FROM table ORDER BY col01 ASC LIMIT 9(例の値に編集する; $ arg = 0 ) – matt

+0

実際、スクリプトで作成した正確なクエリをコピーし、それをmysqlコンソールに貼り付けて実行しました。しかし、ブラウザでのテストでは最初の行しか表示されません。 – matt

答えて

2

fetch()を1回だけ呼び出すため、最初の行を返すだけです。ループ内でそれを呼び出すと、アレイに結果を蓄積:

while ($row = $return->fetch()) { 
    // Append the current row onto your array 
    $this->minis[] = $row; 
} 
return true; 
+1

FetchAll pdoのwhileループは不要です。 – itachi

+0

はい、ただし、指定された配列の値が必要以上に多い – matt

1

PDOStatement::fetch - 結果から次の行を取得は、あなたが唯一のfetch()にあなたの1回の呼び出しで最初の結果を戻ってきている

http://php.net/manual/en/pdostatement.fetch.php

を設定します。結果がなくなるまでfetchに電話する必要があります。マニュアルの例をもう一度読んでください。

1
$this->minis = $return->fetchAll(); 

は、多次元アレイ内のすべてのデータを返すit'l。

関連する問題