1

mySQL データベースからレコードを取得しようとしていますが、何も選択されません。以下のphp関数を使用しています:

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;
            }

}

"< :parameter" の代わりに "WHERE 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 です。

4

1 に答える 1

0

$knappar -> fetch(PDO::FETCH_ASSOC) は、結果セットの次の行のみをフェッチします。結果セット全体を取得するには、fetchAll を使用します。

次に、返された配列を foreach で反復処理できます。

確かに、最初の行だけでなく何も返さない理由はわかりませんが、試してみてください。

于 2012-10-09T12:17:26.793 に答える