2017-05-25 208 views
0

我是PHP的新手,仍然習慣於語法。任何人都可以告訴我如何將這個塊重新編寫爲foreach而不是一個while循環嗎?更改一個PHP while while循環foreach

當運行一個SQL查詢將返回兩行時,我只得到一個,我認爲這是與我使用的循環類型。

我無法獲取有效的語法。

$stmt = $conn->prepare("SELECT * FROM `staff_details` WHERE first_name='{$_POST['firstname']}' AND surname='{$_POST['lastname']}'"); 
<?php while($row = $stmt->fetch(PDO::FETCH_ASSOC)) { ?> 
<tr> 
    <td><?php echo $row['role']; ?></td> 
    <td><?php echo $row['grade']; ?></td> 
</tr> 

謝謝

+0

你確定「角色」和「品位」確實與數據庫中正確列名?另外,請記住在表格行之後關閉while循環''。其他一切都看起來不錯 – Aj334

+0

'while'並不是問題,所以將它改爲'foreach'不會解決你的問題。 –

+1

我的歉意,事實證明,聲明是正確的......一些白癡(我)已經在其中一個名字中放置了額外的空間,因此沒有找到它。對不起浪費大家時間 – Tom

回答

1
$stmt = $conn->prepare("SELECT * FROM `staff_details` WHERE first_name= ? AND surname= ?"); 
$stmt->execute(array($_POST['firstname'], $_POST['lastname'])); //prepare statements 
$row = $stmt->fetchAll(PDO::FETCH_ASSOC); 

foreach ($row as $r){ 
      echo '<tr>'; 
      echo '<td>' . $r['role'] . '</td>'; 
      echo '<td>' . $r['grade'] . '</td>'; 
      echo '</tr>'; 
} 
0
$q = "SELECT * FROM `staff_details` WHERE first_name='{$_POST['firstname']}' AND surname='{$_POST['lastname']}'"; 
$result = $db->query($q)->fetchall(PDO::FETCH_ASSOC); 
foreach ($result as $key) : 
//do some actions 
endforeach;