2012-10-09 60 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_ –