我在while循环中获取数据,一切都很好,但现在我在whire循环中输入了另一个mysql获取,以获取该循环id的一些特定数据,但它只返回第一行,就像我在中间进行的mysql获取数据查询阻止了前一个查询:S
这是代码:
while($row = $stmt->fetch()){
$checkifexists = "SELECT * FROM `excuroffic` WHERE excursionid=:exc AND officeid=:off";
$check_params = array(
':exc' => $row['id'],
':off' => $_GET['office']
);
try
{
$stmt = $db->prepare($checkifexists);
$result = $stmt->execute($check_params);
$reply = $stmt->rowCount();
if($reply!=0)
$getprices = $stmt->fetch();
}
catch(PDOException $ex)
{
die("Failed to run query: " . $ex->getMessage());
}
?>
<tr>
<td><?php echo $row['name']; ?></td>
<td>€<?php if($reply == 0) echo "0.00"; else echo $getprices['adult']; ?></td>
<td>€<?php if($reply == 0) echo "0.00"; else echo $getprices['child']; ?></td>
<td><a href="index.php?p=payment_edit&id=<?php echo $row['id']; ?>&office=<?php echo $_GET['office']; ?>">Edit Prices</a></td>
</tr>
<?php
}
?>
请假设while循环工作正常,因为如果我删除while循环中的第二个查询,它将显示所有记录。
那么,为什么循环中的查询会在第一个数据返回时中断循环:S
提前谢谢。
在内部循环中,不要使用$stmt
,您正在重写第一个循环变量。只需将内部循环中的变量名更改为$stmt_2
或更相关的即可
while($row = $stmt->fetch()){
^^^^--- $stmt from previous query
....
try
{
$stmt = $db->prepare($checkifexists);
^^^^^---overwrites previous $stmt