0

私は決してフルタイムのPHPプログラマーではありませんが、これを行うための最も効率的な方法は何でしょうか?ページに表示したいデータを取得するためにフェッチを実行しています。通常、クエリ結果には複数の行があります。

以下は、何も表示しない最後のelseステートメントを除いて、うまく機能します。この部分は機能しません。基本的に、データの行を表示したいのですが、何も存在しない場合は、「なし」というメッセージをスローします。

私はいくつか読んだのですが、whileループと複数の結果セットを使用すると、標準のelseを単純に使用することはできません...両方とも!emptyまたはissetを使用します。

誰かがカウンターをすることに言及しましたか?これはこれを達成するための最良の方法でしょうか。私はおそらく将来このようなデータをさらに追加する予定であり、正しい方法でそれを行いたいので、どんな提案にもオープンです。

ありがとう!

while($myvariable = oci_fetch_assoc($stmt))
{
if(!empty($myvariable))
    {
    echo "<tr><th>DISPLAY FIELD NAME:</th><td>" . $myvariable['myrowdata'] . </td></tr>";

    }
    else 
    {
    echo "<tr><th>DISPLAY FIELD NAME:</th><td>None</td></tr>";
    }
}
4

4 に答える 4

1

PHPマニュアルのoci_fetch_assocを見てください。この関数は通常、行が存在しないことを示す FALSE を返すまでループで呼び出されます。そのため、while ループ内に他の if または else は必要ありません。

于 2012-05-10T20:48:31.303 に答える
0

最初の行をフェッチし、それが FALSE でないかどうかをチェックすることにより、ループの前にチェックを行います。そうでない場合は、それをループにフィードし、ループの END で次の行をフェッチします。これは「ループのプライミング」と呼ばれ、珍しいことではありません。

if(!($myvariable = oci_fetch_assoc($stmt))) {
    echo "<tr><th>DISPLAY FIELD NAME:</th><td>None</td></tr>";
} else {
    while($myvariable) {
        echo "<tr><th>DISPLAY FIELD NAME:</th><td>" . $myvariable['myrowdata'] . </td></tr>";
        $myvariable = oci_fetch_assoc($stmt));
    }
}
于 2012-05-10T20:49:47.943 に答える
0

このリファレンスは、関数 oci_fetch_assoc の使用について役立つと思います: http://php.net/manual/en/function.oci-fetch-assoc.php#100304

于 2012-05-10T20:51:58.050 に答える
0

while ステートメントは、「$myvariable」に何かを取得した場合にのみ実行されるため、if ステートメントは冗長であり、この場合、else は無関係です。あなたが考えていることの線に沿って何かを実行したい場合は、「oci_fetch_all()」を実行してから、ループして if/else を実行できます。

于 2012-05-10T20:54:12.843 に答える