2017-03-02 4 views
-2

私は正直なところ、以前は使用していなかった新しい技術を使って練習用のWebフォーラムを構築しています。具体的には、私はmysqliの代わりにPDOを使用しています。この最新のハングアップまではかなり桃でした。PDOの照会結果が適切に配列に入っていない

今私がしようとしている大きなことは、私のpostsテーブルからすべての行を選択し、連想配列に入れて、各行をループしてデータを出力し、人々がどのスレッドを選ぶことができるようにすることです開いてみたい

現時点では、私の配列には1つの行しか得られません。私はそれが私のSQLではないことを知っています。なぜなら、私はそれが意図したとおりに動作するので、Webブラウザの外で実行するので、結果を反復しようとしているか、変数。ここに私のコード...

function get_posts($board){ 
    include("db_connect.php"); 
    $sql = "SELECT * FROM posts 
       WHERE board = ? 
       ORDER BY stickied DESC, date DESC"; 
    try{ 
     $sth = $dbh->prepare($sql); 
     $sth->bindValue(1, $board, PDO::PARAM_INT); 
     $sth->execute(); 
     $results = $sth->fetchAll(PDO::FETCH_ASSOC); 
    } catch (PDOException $e) { 
     echo $e->getMessage() . "<br>"; 
    } 
    return $results; 
} 

そして、私のWebページ上でそれを実行するためのコードが...

$posts[] = get_posts(1); 

// output all of the posts 
print_r($posts); 

だ、私が与えているデータ...

Array ( 
    [0] => Array ( 
     [user_id] => 1 
     [date] => 2017-02-28 16:58:54 
     [post_id] => 1 
     [board] => 1 
     [stickied] => 1 
     [post_text] => Please Ignore 
     [post_title] => Test Post Please Ignore 
    ) 
) 

この表には現在3つの投稿(行)があります。 PDOがどのように機能するかは、私が見逃していることが基本的なことだと私は気付いていますが、私はそれを理解できません。どんな助けでも大歓迎です!

+2

あなたのテーブルの3つの投稿はすべて 'board = 1'ですか? 1つしか 'board = 1'とは思われません。確認して確定してください –

+1

ここに問題はありません。 @Anantが述べたように、あなたはあなたの 'board' idをチェックしたいかもしれません。 – subwaymatch

+1

あなたは何も見逃さず、結果は適切に配列に入っています。あなたのコードは条件が一致する正確な行を返す –

答えて

1

@anantと@subwaymatchが指摘しているように、boardのIDはこの件では1でした。その問題は、ボード番号がで、がボード#2の情報を取得しようとしていたことです。

ありがとうございました。

関連する問題