2016-04-30 13 views
0

現在、データベースに存在するエンティティの数に応じて自動的に塗りつぶすテーブルを作成する必要があります。選択したデータを含むループ形式

私は現在、単純なselect文を持っています。

$articleID = $_GET['id']; 
    $stmt = $pdo->query('SELECT * FROM article WHERE articleID = "' . $articleID . '"'); 
    $result = $stmt->fetch(PDO::FETCH_ASSOC); 
    $stmt2 = $pdo->query('SELECT * FROM comments WHERE artID = "' . $articleID . '"'); 
    $result2 = $stmt2->fetch(PDO::FETCH_ASSOC); 

フォームを使用しようとしましたが、1つのデータしか保存しませんでした。

+0

2番目のステートメントの結果をループするだけです – ScaperExe

+0

'while'ループを試しましたか? – RST

+0

'私はフォームを使ってみました。 –

答えて

1

あなたのSQLコードから、articleIdがアーティクルテーブルのプライマリキーであり、commentsテーブルのartIdが外部キーです。

したがって、最初のクエリでは結果だけが返されるため、fetchメソッドが返されます。 一方、2番目のクエリは多くの行を返すことができますが、fetchメソッドは最初のクエリのみを返します。結果の配列を取得するには、fetchAllメソッドを使用し、結果の配列をループしてすべてのコメントを表示する必要があります。

ここでは、構造を見るのに役立つ2つの結果セットがダンプされたコードを示します。 私はまた、2番目の結果をどのようにループできるかの簡単な例を示しました。

$articleID = $_GET['id']; 
$stmt = $pdo->query('SELECT * FROM article WHERE articleID = "' . $articleID . '"'); 
$result = $stmt->fetch(PDO::FETCH_ASSOC); 

$stmt2 = $pdo->query('SELECT * FROM comments WHERE artID = "' . $articleID . '"'); 
$result2 = $stmt2->fetchAll(PDO::FETCH_ASSOC); 

var_dump($result); 
var_dump($result2); 

foreach($result2 as $comment){ 
    echo '<p>'.$comment['text'].'<p>'; 
} 
関連する問題