2013-08-25 65 views
0

這個查詢沒有問題,因爲當我使用print_r時,它打印出三個不同的數組,我只是想知道我在這裏丟失了什麼來獲得這個foreach工作,因爲此刻我得到一個錯誤.. 。foreach的無效參數

警告:在C的foreach()提供參數無效:\ XAMPP \ htdocs中\ myshop \管理員\上線account_list.php 11

<?php 

$account_list = "SELECT * FROM accounts"; 
$query = $connect->query($account_list); 
while ($final_result = $query->fetch_array(MYSQLI_ASSOC)) { 
// echo '<pre>'; 
// print_r($final_result); 
// echo '</pre>'; 
} 
echo '<table><tbody>'; 
foreach ($final_result as $result) { 
echo '<tr><td>'.$result['id'].'</td> 
<td>'.$result['firstname'].'</td> 
<td>'.$result['lastname'].'</td> 
<td>'.$result['email'].'</td> 
<td>'.$result['address'].'</td>'; 
} 
echo '</body></table>'; 
?> 

回答

4

事實上,直到詢問完成後,您才撥打foreach,此時$final_resultFALSEforeach (false as $result)確實無效。

你會希望在兩個循環結合起來:

$account_list = "SELECT * FROM accounts"; 
$query = $connect->query($account_list); 

echo '<table><tbody>'; 

$final_result = false; 

while ($result = $query->fetch_array(MYSQLI_ASSOC)) { 
    // echo '<pre>'; 
    // print_r($final_result); 
    // echo '</pre>'; 

    $final_result = $result; 

    echo '<tr><td>'.$result['id'].'</td> 
    <td>'.$result['firstname'].'</td> 
    <td>'.$result['lastname'].'</td> 
    <td>'.$result['email'].'</td> 
    <td>'.$result['address'].'</td>'; 
} 

echo '</body></table>'; 
+1

'$ result = $ final_result;'循環內部缺少。 +1一個很好的答案 –

+0

固定,謝謝。 –

0

$final_result不是一個數組,但的一個元件陣列,而不是隻寫 -

$final_result = $query->fetch_all(MYSQLI_ASSOC); 
+0

'fetch_array'返回一行,所以這個答案是正確的,你需要使用',而不是fetch_all'。 –