我只检索了一行PHP数据


I only retrieve one line of data PHP

我在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>&euro;<?php if($reply == 0) echo "0.00"; else echo $getprices['adult']; ?></td>
                <td>&euro;<?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