从MySQL数据库中提取特定数据

时间:2018-07-17 21:05:29

标签: php mysql pdo

基本上,我有一个名为requests的表,该表中有一个名为status的列。默认情况下,status设置为待定,但也可以设置为批准或拒绝。

我正在尝试显示状态设置为待处理的行中的数据,但不显示已批准或拒绝的行。

我该怎么做?

我的PDO声明:

try{

    $statement = $db->query("SELECT * FROM requests");
    $requests = $statement->fetchAll(PDO::FETCH_ASSOC);

}catch (PDOException $ex){
    $result = flashMessage("An error occurred: " .$ex->getMessage());
}

显示数据的页面:

                  <tbody>
                    <tr>
                      <?php if(isset($request['status'] === 'pending')): ?>
                        <th scope="row"><?= $request['id']; ?></th>
                        <td><?= $request['username']; ?></td>
                        <td><?= $request['artist']; ?></td>
                        <td><?= $request['day']; ?></td>
                        <td><?= $request['venue']; ?></td>
                        <td><?= $request['city']; ?></td>
                      <?php else: ?>
                      <? # do nothing ?>
                    <?php endif: ?>
                    </tr>
                  </tbody>

我当前的代码页面显示500错误。

谢谢!

2 个答案:

答案 0 :(得分:1)

我认为500错误是由两个问题引起的:

endif:

检查the PHP documentation for alternative control structures-应该是

endif;

然后,这个:

<?php if(isset($request['status'] === 'pending')): ?>

不是如何将结果限制为仅具有“待定”状态的结果。 isset仅接受变量,并且给它类似$request['status'] === 'pending'的表达式是另一个解析错误。 isset仅对未设置或设置为null的变量返回false。

但这没关系,因为您应该改为按查询中的状态进行过滤。只需添加WHERE子句,然后删除PHP代码中的检查即可。

"SELECT * FROM requests WHERE status = 'pending'"

答案 1 :(得分:0)

您很可能会收到错误500,因为您没有终止if语句。您需要一个半冒号。

 <tbody>
                <tr>
                  <?php if(! empty($request['status']) && $request['status'] === 'pending')): ?>
                    <th scope="row"><?= $request['id']; ?></th>
                    <td><?= $request['username']; ?></td>
                    <td><?= $request['artist']; ?></td>
                    <td><?= $request['day']; ?></td>
                    <td><?= $request['venue']; ?></td>
                    <td><?= $request['city']; ?></td>
                  <?php else: ?>
                  <? # do nothing ?>
                <?php endif; ?>
                </tr>
              </tbody>