我想用while循环显示一些记录,有些没有循环。但是while循环忽略第一条记录并显示其他记录。
if (isset($_SESSION['patient_no'])) {
$patient_id = $_SESSION['patient_no'];
$sql = $db->prepare("select * from patient_record JOIN medicine_potency ON reference_no=:reference_id and patient_code=:reference_no");
if (!$sql) {
echo $sql->errorInfo();
} else {
$sql->bindParam('reference_id', $patient_id, PDO::PARAM_INT);
$sql->bindParam('reference_no', $patient_id, PDO::PARAM_INT);
$sql->execute();
$sql->bindColumn('code', $id);
$sql->bindColumn('reference_no', $reference_no);
$sql->bindColumn('patient_name', $patient_name);
$sql->bindColumn('father_name', $father_name);
if ($sql->columnCount() > 0) {
$sql->fetch(PDO::FETCH_ASSOC);
?>
<tr bgcolor=" #005A04"><td colspan="2" style="text-align: center; color:#CCFFBB">Personal Information</td></tr>
<tr>
<td>Reference No</td>
<td><?php echo $reference_no; ?></td>
</tr>
<tr>
<td>Patient Name</td>
<td><?php echo $patient_name; ?></td>
</tr><?php while ($sql->fetch(PDO::FETCH_ASSOC)) {
?>
<tr>
<td><?php echo $medicine; ?></td>
<td><?php echo $potency; ?></td>
</tr>
答案 0 :(得分:0)
简单的解决方案:您可以将while循环转换为do-while循环,因此第一次迭代它将使用您的第一次获取。只有在循环之前有一次提取时才有效。
但是我不确定在你的情况下你在循环之前进行相同的提取有什么意义,所以为什么你甚至需要呢?
答案 1 :(得分:0)
在MYSQL语句中使用OFFSET
语法:
$sql = $db->prepare("select * from patient_record JOIN medicine_potency ON reference_no=:reference_id and patient_code=:reference_no OFFSET 1");
这将跳过第一个结果,然后继续。