我只检索一行PHP数据

时间:2014-04-13 15:44:50

标签: php pdo

我在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>&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

提前致谢。

2 个答案:

答案 0 :(得分:1)

在你的内部循环中,不要使用$stmt,你要覆盖第一个循环变量。只需更改内部循环中的变量名称,例如$stmt_2或更相关的内容

答案 1 :(得分:0)

while($row = $stmt->fetch()){
             ^^^^--- $stmt from previous query
    ....
        try
        { 
            $stmt = $db->prepare($checkifexists);
            ^^^^^---overwrites previous $stmt