2013-08-25 34 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'。 –