2017-05-25 31 views
0

私はPHPを初めて使い、まだ構文に慣れています。誰かが、このブロックをwhileループの代わりにforeachとして書き直す方法を教えていただけますか?php whileループをforeachに変更する

2つの行を返すSQLクエリを実行すると、1つしか得られず、使用しているループの種類と関係があると思います。

動作する構文の取得に問題があります。

$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

私の謝罪は、その声明が大丈夫だったことが判明しました。ある馬鹿(私)が名前の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; 
関連する問題