0

ハイ。同様の答えがあることは知っていますが、うまくいきません。これが私のタラです:

<?php include 'header.php'; ?>
<?php include 'connect.php';

$q = mysqli_query($link, $aaa = 'SELECT * FROM agentii LEFT JOIN orase ON agentii.oras=orase.oras_id WHERE orase.oras_id = \'' .$_GET['id']. '\'') or die(mysqli_error($link));
$row = mysqli_fetch_assoc($q);
?>

<h2>Title <em><?php echo $row['oras'];?></em></h2>

<div class="div_view">
    <table cellspacing="0" cellpadding="5" border="0" width="100%">
        <tr>
            <th>Agentie</th>
            <th>Adresa</th>
        </tr>

        <?php while ($row = mysqli_fetch_assoc($q)) { ?>

        <tr>
            <td><?php echo $row['agentie'];?></td>
            <td><?php echo $row['adresa'];?></td>
        </tr>

        <?php }?>

    </table>
</div>

<?php include 'footer.php'; ?>

この出力 (新しいアカウントのため、画像を配置できません。prt src へのリンクを配置します): http://postimage.org/image/w9zsexz91/

私のデータベースには 3 つの行があり、コードは 2 つしか出力しません。これは 2 つの mysqli_fetch_assoc が原因であることはわかっていますが、すべての行を表示したいので、タイトルも表示したいと思います ( <?php echo $row['oras'];?>)。

誰かがこれで私を助けてくれますか? 事前にt​​hx!

4

2 に答える 2

1

最初に義務的な警告:小さなボビーテーブルを覚えておいてください! (または:コードはSQLインジェクション攻撃に対して脆弱です)

次に、whileループで2行しか取得しません。これは、最初にループの外側の行を要求したため、結果の内部カーソルが増加するためです。

タイトルと行を一度に取得する場合は、結果をキャッシュする必要があります。次に例を示します。

$resultArray = array();
while ($row = mysqli_fetch_assoc($q)) {
  $resultArray[] = $row;
}
//....
?>
<h2><?php echo $resultArray[0]['oras']; ?></h2>

<?php // ... ?>

<?php foreach($resultArray as $row) {
  <tr>
    <td><?php echo $row['agentie'];?></td>
    <td><?php echo $row['adresa'];?></td>
  </tr>
} ?>

これは単なるスタブです。もちろん、行を取得したかどうかなどのチェックを実装する必要があります...

于 2012-08-14T07:53:54.867 に答える
0

試す:

<?php do { ?>

<tr>
    <td><?php echo $row['agentie'];?></td>
    <td><?php echo $row['adresa'];?></td>
</tr>

<?php } while ($row = mysqli_fetch_assoc($q)); ?>

このループの最初の反復では、最初にフェッチされた行が出力されます。句の場所を変更しただけでwhile、新しい行がフェッチされる前にループのコードが強制的に実行されます。

于 2012-08-14T07:42:26.713 に答える