2013-02-20 66 views
-1

我需要幫助,我試圖抓取行,但不能將它追加到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>' ; } 
    ?>  

回答

1

你的變量$行被初始化爲數組,但不被使用。

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

這將創建你的所有$行

+0

所以就像這樣'$ query = $ dbc->查詢('SELECT * FROM customer'); $ rows = array(); while($ row = $ query-> fetch_assoc()) \t \t {$ rows [] = $ row; \t \t echo $ row ['clientid']。'' '$行[ 'inital'。' '$行[ '名字'。' '$行[ '姓氏'。' '$行[ '移動'。' '$行[ '固定電話'。' '$行[ '電子郵件'。' '$行[ '地址'。' '$行[ '郵政編碼'。' 」。$行[ '無障礙']; } foreach($ rows as $ row)' – KP2012 2013-02-20 11:35:44

+0

是的。當然,通過將while循環與foreach循環相結合,你可以使它更有效率,因爲你基本上遍歷了兩行的列表。 – 2013-02-20 14:26:43

+0

它不喜歡'​​'等 – KP2012 2013-02-20 19:16:40

1

我不知道爲什麼要在$行&使用的foreach冗餘兩次你仍然可以像所有的記錄,

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

我想要的風格'$ rows'與''​​和數組'' – KP2012 2013-02-20 11:30:24

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

或者,如果你想這樣做在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 } ?> 
+0

首先是回聲只是爲我檢查它的工作它比我需要的風格內容的樣式,因此它是可讀的,所以它被建議給我,我把所有'$行'放入'$行'應該有所幫助。對於提供的第二種解決方案,它不起作用,也不推薦由另一個人在這裏。我關注誰?作爲北行工作:(排除第一位while($ row ='$ query-> fetch_assoc()){rows [] = $ row; echo $ row ['clientid']。''。$ row [' 'row''。''。''。$'row'''''''。''。$''''''。''。''。''。''。''。''。''。 。$ row ['email']; }' – KP2012 2013-02-20 11:31:40

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); 
+1

順便說一下,你不是'echo'行,所以不會顯示任何值;) – 2013-02-20 10:50:45