0
$sqlCommand2 = "SELECT blogid FROM blogtags WHERE tag='$pageid'";
$query2 = mysqli_query($myConnection, $sqlCommand2) or die (mysqli_error());
while ($row = mysqli_fetch_array($query2)) {
    $selectedtag = $row['blogid'];
}   

この sql select は、$selectedtag に 1,2,3 の値を与える必要がありますが、3 の値しか与えていません。pageid と等しい最後の行です。すべての行を引っ張るのではなく、最後の行だけを引っ張る理由を誰でも理解できますか?

4

6 に答える 6

1

これは、ループ内で変数に値を割り当てているためです。したがって、最後の値が他のすべての値を上書きします。代わりに配列を使用してください。

$selectedtag = $row['blogid'];に変更$selectedtag[] = $row['blogid'];

于 2013-04-17T15:12:45.180 に答える
1

で試してください:

$selectedtag = array();
while ($row = mysqli_fetch_array($query2)) {
    $selectedtag[] = $row['blogid'];
}

print_r($selectedtag);
于 2013-04-17T15:12:51.773 に答える
1

$selectedtag行の最新の反復の blogid 値で上書きし続けます。

これらの値で配列を作成するか、ループ内で値を使用して何かを行う必要があります。

それはすべて、データで何を計画しているかによって異なります。

収集した ID でブログを検索する場合は、ブログ ID をループしてブログを検索するのではなく、より大きなクエリを作成することをお勧めします。

次のようなことができます。

SELECT id, title, content, author, date
FROM blogs
WHERE id IN 
  (SELECT blogid FROM blogtags WHERE tag ='$pageid')

上記は、列/テーブルの命名に関する知識がほとんどない非常に大まかな例ですが、上記のクエリを使用すると、特定のタグを持つブログの結果が得られるはずです。

幸運を!

于 2013-04-17T15:13:36.573 に答える
0

への変更:

  $sqlCommand2 = "SELECT blogid FROM blogtags WHERE tag='$pageid'";
        $query2 = mysqli_query($myConnection, $sqlCommand2) or die (mysqli_error());
                    while ($row = mysqli_fetch_array($query2)) {
                    $selectedtag[] = $row['blogid'];
                    } 

$selectedtag[] <--配列に値を入れます。

于 2013-04-17T15:13:28.977 に答える