0

SQL から返された配列があり、それらをページで使用する別の文字列にする必要があります。これはデータベース内の単一の行から外れており、ユーザーが持っているすべてのフォルダーを一覧表示します。データベースの例 john には、赤のフォルダー、緑のフォルダー、青のフォルダーがあります。クエリを実行し、fetchAll を使用して john のフォルダーを返します。配列で持っています。配列をエコーすることができ、 redfoldergreenfolderbluefolder を出力します

配列を取得して個別の文字列に分割するにはどうすればよいですか?

PHP コード

  $query = "SELECT album_name FROM albums WHERE username = :username";
    $query_params = array(
    ':username' => $email
    );

    try {
        $stmt   = $db->prepare($query);
        $result = $stmt->execute($query_params);
    }
    catch (PDOException $ex) {
        echo 'Database Error, please try again.';
    }

    $rows = $stmt->fetchAll();

    foreach ($rows as $row) {
    $post             = array();
    $post["album_name"] = $row["album_name"];
    echo $post["album_name"];  // This just lists all albums together no spaces or commas

    }

    $text = implode(",", $post);
    echo $text;  // This just outputs the last item (bluefolder)
4

5 に答える 5

1

以下は修正が必要です。

foreach ($rows as $row) {
    $post             = array();
    $post["album_name"] = $row["album_name"];
    echo $post["album_name"];  // This just lists all albums together no spaces or commas

}

$text = implode(",", $post);
echo $text;  // This just outputs the last item (bluefolder)

上記を次のように変更します。

$post = array();
foreach( $rows as $row )
{
//  $post = array(); // This line should not be here . It should be outside and above foreach
//  The below echo is for test purpose . Comment it if you don't need it
    echo $row["album_name"] ,' ';
//  $post["album_name"] = $row["album_name"]; // This keeps assigning $row["album_name"] to same index "album_name" of $post . Eventually you will have only one value in $post
    $post[] = $row["album_name"];
}

// $text = implode(",", $post); // With coma's as separator
$text = implode(" ", $post); // With blank's as separator
echo 'John has ' , $text;
于 2013-10-04T03:34:55.090 に答える
0

print_r($post);最後の行を試してください。

于 2013-10-04T03:29:18.470 に答える
0

これを試して:

$post  = array();
foreach ($rows as $row) {

array_push($post, 'album_name', $row["album_name"]);

}

$text = implode(",", $post);
echo $text; 

関連バージョンなし:

$post  = array();
foreach ($rows as $row) {

$post[] = $row["album_name"];

}

$text = implode(",", $post);
echo $text; 
于 2013-10-04T03:41:35.947 に答える
0

最後のフォルダーのみを表示する理由は、ループの最初に「$post = array()」を実行するためです。毎回配列をリセットします...ループから取り出して、foreachの上に置きます。

1 : http://php.net/manual/en/function.im最後のフォルダーのみを表示する理由は、ループの最初に「$post = array()」を実行するためです。毎回配列をリセットします...ループから取り出して、foreachの上に置きます。

編集:

このようにしてみてください:

$rows = $stmt->fetchAll(PDO::FETCH_ASSOC);

$post = array();

foreach ($rows as $key => $folder) {
    array_push($post, $folder)
}

$text = implode(",", $post);
于 2013-10-04T03:34:37.983 に答える
0

for each の側で print_r($text) を使用してください。そうすれば、commos を含むすべての arry を取得し、そこから $post = arry を削除して、foreach の上に置きます。私はあなたを助けようとしています、これが助けになるかもしれません

ありがとうアナンド

于 2013-10-04T03:37:35.387 に答える