0

mysqlを使用するphpで、2つの列の値を1回だけ出力してから、他の値をループする方法を教えてください。

ここ:

$exe_fetch_data = mysql_query("select category, subcategory, title, body, views from table");
while($row = mysql_fetch_array($exe_fetch_data))
echo $row['category'];    //Only once
echo $row['subcategory']; //Only once

{
echo $row['title'];
echo $row['body'];
echo $row['views'];
}

必要な出力:

Category->SubCategory //Outputted only once

Title,  //Title Body and Views depend on whatever's there in the db. Could be 10 or more
Body,
Views

Title,
Body,
Views

Title,
Body,
Views
4

4 に答える 4

3

このコードはうまくいくはずです

    $exe_fetch_data = mysql_query("select category, subcategory, title, body, views from table");
    $row_once = mysql_fetch_array($exe_fetch_data)
    echo $row_once['category'];    //Only once
    echo $row_once['subcategory']; //Only once

   while($row = mysql_fetch_array($exe_fetch_data)) {
    echo $row['title'];
    echo $row['body'];
    echo $row['views'];
    }

値が初期で、最初の反復後trueに変わるフラグを使用することもできます。falseしかし、上記のコードは、各反復後にフラグ値を比較/チェックせず、巨大なデータベースを使用すると実行時間を節約できるため、フラグを使用するよりも高速になると思います。

于 2012-11-26T06:19:46.160 に答える
2

1 つの解決策は、カテゴリが既に出力されているかどうかを記憶する bool である可能性があります。

$exe_fetch_data = mysql_query("select category, subcategory, title, body, views from table");
$category_output_done = false;
while($row = mysql_fetch_array($exe_fetch_data))
{
    if (!$category_output_done) {
        echo $row['category'];    //Only once
        echo $row['subcategory']; //Only once
        $category_output_done = true;
    }

    echo $row['title'];
    echo $row['body'];
    echo $row['views'];
}

別の解決策は、反復ごとにインクリメントするカウンターです。

于 2012-11-26T06:17:51.753 に答える
1

簡単なカウンターを追加します-

$counter = 0;
$exe_fetch_data = mysql_query("select category, subcategory, title, body, views from table");
while($row = mysql_fetch_array($exe_fetch_data))
if ($counter == 0){
echo $row['category'];    //Only once
echo $row['subcategory']; //Only once
$counter = 1;
}
于 2012-11-26T06:18:07.760 に答える
1

多くの結果が得られる可能性があるため、while ループにフラグを保持すると、カテゴリを表示したかどうかが既に CPU を消費しています。あなたは常に最初の結果セットでカテゴリを表示しているので、while ループでフラグを保持しませんが、次のようにします。

$exe_fetch_data = mysql_query("select category, subcategory, title, body, views from table");
$iNrOfResults = mysql_num_rows($exe_fetch_data);
//See if the result set has any rows at all, display the categories once
if(iNrOfResults > 0)
{
    $row = mysql_fetch_array($exe_fetch_data)
    echo $row['category'];    //Only once
    echo $row['subcategory']; //Only once
    echo $row['title'];
    echo $row['body'];
    echo $row['views'];
}

//See if there are any more results, do not display the categories anymore
if(iNrOfResults > 1)
{
    while($row = mysql_fetch_array($exe_fetch_data))
    {
        echo $row['title'];
        echo $row['body'];
        echo $row['views'];
    }
}
于 2012-11-26T06:25:23.763 に答える