-1

私は助けが必要です、私はフェッチされた行に自分自身を試みましたが、それをwhileループ内の配列に追加することはできません:次に、後で foreach で then 出力を $rows[] = $row;構築しようとします。$rows array

どうすればいいですか?

 <?php
    $query = $dbc->query('SELECT * FROM customer');
    $rows = array();
    while ($row = $query->fetch_assoc()) {
        echo $row['clientid'].' '.$row['inital'].' '.$row['firstname'].' '.$row['lastname'].' '.$row['mobile'].' '.$row['landline'].' '.$row['email'].' '.$row['address'].' '.$row['postcode'];
    }
 foreach ($rows as $row) { 
 ?>
  <td><?php $row['clientid']; ?></td>
  <td><?php $row['inital']; ?></td> 
  <td><?php $row['firstname']; ?></td>
  <td><?php $row['lastname']; ?></td>
  <td><?php $row['mobile']; ?></td>
  <td><?php $row['landline']; ?></td>
  <td><?php $row['email']; ?></td>
  <td><?php $row['address']; ?></td>
  <td><?php $row['postcode']; ?></td>
  </td>
  <?php } ?>

最終的にはこのようにしましたが、

   <?php
  $query = $dbc->query('SELECT * FROM customer');
if ( mysqli_num_rows( $query ) > 0 )
{
  while ( $row = mysqli_fetch_array( $query, MYSQLI_ASSOC ))
  {
 echo "<tr><td>".$row['clientid']."</td><td>".$row['inital']."</td><td>".$row['firstname']."</td><td>".$row['lastname']."</td><td>".$row['mobile']."</td><td>".$row['landline']."</td><td>".$row['email']."</td><td>".$row['address']."</td><td>".$row['postcode']."</td></tr>";
  }
  echo '</tbody></table>' ;
}
else { echo '<div class="alert alert-error">
There are currently no records.
</div>' ; }
    ?>    
4

4 に答える 4

1

変数$rowsは配列として初期化されていますが、使用されていません。

while ($row = $query->fetch_assoc()) {
    $rows[] = $row;
}

これにより、すべての$rowの配列が作成されます

于 2013-02-20T10:52:32.773 に答える
1

$rows にすべてのレコードが必要で、 foreach を 2 回冗長に使用する理由がわかりません。

$rows = array();
while ($row = $query->fetch_assoc()) {
   $rows[] = $row;
}
于 2013-02-20T10:47:06.463 に答える
0

Enter と Tab を使用してください。

また、なぜ行配列を作成したいのですか? fetch_assoc がそれを行います

<?php while ($row = $query->fetch_assoc()) { ?> 
    <td><?php echo $row['clientid']; ?></td> 
    <td><?php echo $row['inital']; ?></td> 
    <td><?php echo $row['firstname']; ?></td> 
    <td><?php echo $row['lastname']; ?></td> 
    <td><?php echo $row['mobile']; ?></td> 
    <td><?php echo $row['landline']; ?></td> 
    <td><?php echo $row['email']; ?></td> 
    <td><?php echo $row['address']; ?></td> 
    <td><?php echo $row['postcode']; ?></td> 
    <td><?php echo $row['accessibility']; ?></td> 
<?php } ?>

または、2ステップで実行したい場合

$rows = $query->fetch_all();

...

<?php foreach ($rows as $row) { ?> 
    <td><?php echo $row['clientid']; ?></td> 
    <td><?php echo $row['inital']; ?></td> 
    <td><?php echo $row['firstname']; ?></td> 
    <td><?php echo $row['lastname']; ?></td> 
    <td><?php echo $row['mobile']; ?></td> 
    <td><?php echo $row['landline']; ?></td> 
    <td><?php echo $row['email']; ?></td> 
    <td><?php echo $row['address']; ?></td> 
    <td><?php echo $row['postcode']; ?></td> 
    <td><?php echo $row['accessibility']; ?></td> 
<?php } ?>
于 2013-02-20T10:49:22.107 に答える
0

あなたの質問に答える:

while ($row = $query->fetch_assoc()) {
    $rows[] = $row;
    echo $row['clientid'].' '.$row['inital'].' '.$row['firstname'].' '.$row['lastname'].' '.$row['mobile'].' '.$row['landline'].' '.$row['email'].' '.$row['address'].' '.$row['postcode'].' '.$row['accessibility'];
}

ただし、これに対して別のアプローチを取ることもできます。単にwhileループを使用して行を印刷しないのはなぜですか?

while ($row = $query->fetch_assoc()) {
?>
<td><?php $row['clientid']; ?></td>
<td><?php $row['inital']; ?></td> 
<td><?php $row['firstname']; ?></td>
<td><?php $row['lastname']; ?></td>
<td><?php $row['mobile']; ?></td>
<td><?php $row['landline']; ?></td>
<td><?php $row['email']; ?></td>
<td><?php $row['address']; ?></td>
<td><?php $row['postcode']; ?></td>
<td><?php $row['accessibility']; ?></td>
<?php } ?>

または、配列内の行だけが必要な場合は、次fetchAll()のようにを使用できます。

$rows = $query->fetchAll(PDO::FETCH_ASSOC);
于 2013-02-20T10:49:59.143 に答える