基本上,我有一个名为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错误。
谢谢!
答案 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>