2012-10-09 62 views
1

我試圖從mySQL數據庫檢索記錄,但沒有被選中。我使用的是下面的PHP函數:PDO選擇語句無(FETCH_ASSOC)

function printButton($conn){ 
$your_variable = 1; 
$knappar = $conn->prepare('SELECT * FROM knappar WHERE pid < :parameter'); 
$knappar->bindParam(':parameter', $your_variable, PDO::PARAM_INT); 
$knappar->execute(); 

      //Loops boxes 
      $count = 1; 
      while ($row = $knappar->fetch(PDO::FETCH_ASSOC)) { 
      echo "<a href='#'><div class='box' id='div_item".$count."'>"; 
      echo $row['header']; 
      echo $row['id']; 

      echo "</div></a>"; 
      $count = $count + 1; 
      } 

} 

如果我改變「其中pid = 1」它正常工作,而不是「<:參數」。我究竟做錯了什麼?

我把它更新到什麼樣子現在:

function printButton($conn){ 
$your_variable = 1; 
$knappar = $conn->prepare('SELECT header FROM knappar WHERE pid < :parameter'); 
$knappar->bindParam(':parameter', $your_variable, PDO::PARAM_INT); 
$knappar->execute(); 

      //Loops boxes 
     $results = $knappar -> fetchAll(PDO::FETCH_ASSOC); 
     foreach ($results as $row){ 

     echo $row['header']; 
     echo '<br />'; 

     } 

} 

有了上面的例子中,仍然沒有輸出。數據庫中的pid值爲int(11),所有行的值爲1.

回答

1

$ knappar - > fetch(PDO :: FETCH_ASSOC)只讀取結果集的下一行。使用fetchAll來獲取整個結果集。

然後,您可以使用foreach遍歷返回的數組。

當然,我不確定爲什麼它不會返回任何內容,而不僅僅是第一行,而是試一試。

+0

'while($ row = $ knappar-> fetchALL)'仍然不返回任何內容。 –

+0

while循環不會遍歷每個結果,除非您手動這樣做(您不這樣做)。 ($ knappar - > fetch(PDO :: FETCH_ASSOC))as $ row){ //您的代碼 }' – AdamLazaruso

+0

謝謝,現在我又收到了一個錯誤。 _警告:爲foreach提供的無效參數()in_ –