我在while循环中获取数据,一切都很好,但是现在我在while循环中输入了另一个mysql fetch来获取该循环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
提前致谢。
答案 0 :(得分:1)
在你的内部循环中,不要使用$stmt
,你要覆盖第一个循环变量。只需更改内部循环中的变量名称,例如$stmt_2
或更相关的内容
答案 1 :(得分:0)
while($row = $stmt->fetch()){
^^^^--- $stmt from previous query
....
try
{
$stmt = $db->prepare($checkifexists);
^^^^^---overwrites previous $stmt