2017-05-25 210 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;