web-dev-qa-db-ja.com

mysqli_fetch_array whileループ列

かなり基本的なはずですが、動作しません。 mysqliクエリを反復処理する次のコードがあります。

while($row = mysqli_fetch_array($result)) {
    $posts[] = $row['post_id'].$row['post_title'].$row['content'];
}

それは動作し、戻ります:

変数#1:(配列、3要素)↵0(文字列):「4testtest」(9文字)1(文字列):「1Hello world!WordPressへようこそ。これは最初の投稿です。編集または削除してから、ブログを開始してください!」 (99文字)2(文字列):「2サンプルページこれはサンプルページです。ブログの投稿とは異なります。1か所にとどまり、サイトのナビゲーションに表示されます(ほとんどのテーマ)。」 (161文字)

問題は、3つの列すべてを1つの列に入れるため、個別にアクセスできないことです。

これは例えば:

0 (String): "4testtest" (9 characters)

4、テスト、テストに分ける必要があります

私がこれをするとき:

while($row = mysqli_fetch_array($result)) {             
    $posts['post_id'] = $row['post_id'];
    $posts['post_title'] = $row['post_title'];
    $posts['type'] = $row['type'];
    $posts['author'] = $row['author'];  
}   

3つすべてではなく1行のみを出力します…

どんな助けでも大歓迎です!

6
Sebastian

MySQLからすべての値を取得します。

    $post = array();
    while($row = mysql_fetch_assoc($result))
    {
        $posts[] = $row;
    }

次に、各値を取得します。

<?php 
     foreach ($posts as $row) 
        { 
            foreach ($row as $element)
            {
                echo $element."<br>";
            }
        }
?>

値をエコーし​​ます。または、$ post変数から各要素を取得します

これはあなたの解決策でした。

$x = 0;
while($row = mysqli_fetch_array($result)) {             
    $posts[$x]['post_id'] = $row['post_id'];
    $posts[$x]['post_title'] = $row['post_title'];
    $posts[$x]['type'] = $row['type'];
    $posts[$x]['author'] = $row['author'];
    $x++;
}
5
Bogdan Lozyak

これは、結果を出力するより簡単な方法だと思います。

自分のデータを使用して申し訳ありませんが、簡単に置き換えることができます。

$query = "SELECT * FROM category ";

$result = mysqli_query($connection, $query);


    while($row = mysqli_fetch_assoc($result))
    {
        $cat_id = $row['cat_id'];
        $cat_title = $row['cat_title'];

        echo $cat_id . " " . $cat_title  ."<br>";
    }

これは出力します:

  • -IDタイトル
  • -1ゲイリー
  • -2ジョン
  • -3マイケルズ
3
05beckga

どちらもmysqli_fetch_array whileループで完全に機能します

while($row = mysqli_fetch_array($result,MYSQLI_BOTH)) {
    $posts[] = $row['post_id'].$row['post_title'].$row['content'];
}

(または)

while($row = mysqli_fetch_array($result,MYSQLI_ASSOC)) {
    $posts[] = $row['post_id'].$row['post_title'].$row['content'];
}

mysqli_fetch_array()-2番目の引数$ resulttypeがあります。

MYSQLI_ASSOC:連想配列をフェッチ

MYSQLI_NUM:数値配列をフェッチ

MYSQLI_BOTH:連想配列と数値配列の両方を取得します。

1
Elangovan