如何在while循环中追加数组:$ rows [] = $ row;?

时间:2013-02-20 10:42:10

标签: php mysqli

我需要帮助,我尝试了自己获取的行,但无法将其附加到while循环中的数组:$rows[] = $row;然后尝试构建$rows array然后在foreach输出。

我该怎么做?

 <?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 个答案:

答案 0 :(得分:1)

我不知道为什么你想要所有记录在$ rows&amp;使用foreach冗余两次仍然可以做,

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

答案 1 :(得分:1)

您的变量$ rows初始化为数组,但未被使用。

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

这将创建一个包含所有$ row

的数组

答案 2 :(得分:0)

请使用回车和标签。

另外,为什么要构建行数组? 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 } ?>

或者,如果您想分两步完成

$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 } ?>

答案 3 :(得分: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);