从 table_name 中选择 *,其中 STAUS == 打开/挂起/关闭/全部


SELECT * FROM table_name WHERE staus == open/pending/closed/all

如果用户选择了"显示所有显示打开、挂起和关闭的结果"。

如果用户选择了"显示挂起",则"显示挂起的结果"。

是否可以通过一个查询使其工作?

<?php
$status = isset($_GET['status']) ? filter_input(INPUT_GET, 'status', FILTER_SANITIZE_STRING) : '';// pending, closed, open, all //
if($status == 'pending' or $status == 'closed' or $status == 'open'){
    $query = 'SELECT * FROM table_name WHERE user = :user AND status = :status ORDER BY dateCreated DESC';
    $select = $db->prepare($query);
    $select->bindParam(':user', $userInfo['username'], PDO::PARAM_STR);
    $select->bindParam(':status', $status, PDO::PARAM_STR);
    $select->execute(); 
}else{
    $query = 'SELECT * FROM table_name WHERE user = :user ORDER BY dateCreated DESC';
    $select = $db->prepare($query);
    $select->bindParam(':user', $userInfo['username'], PDO::PARAM_STR);
    $select->execute(); 
}
?>
$status = isset($_GET['status']) ? filter_input(INPUT_GET, 'status', FILTER_SANITIZE_STRING) : '';// pending, closed, open, all //
if($status == 'pending' or $status == 'closed' or $status == 'open')
    $stquery='AND status = :status';
else
    $stquery = '';
$query = 'SELECT * FROM table_name WHERE user = :user '.$status.' ORDER BY dateCreated DESC';
    $select = $db->prepare($query);
    $select->bindParam(':user', $userInfo['username'], PDO::PARAM_STR);
if(!empty($stquery)
    $select->bindParam(':status', $status, PDO::PARAM_STR);
$select->execute();

您可以在准备 SQL 字符串之前对其进行构建。 如果$status是您想要的,那么只需添加该子句即可。 然后,您可以使用一个数组传递给execute(),而不是使用bindParam

$query = 'SELECT * FROM table_name WHERE user = :user';
$params = array(
    'user' => $userInfo['username']
);
if(in_array($status, array('pending', 'closed', 'open'))){
    $query .= ' AND status = :status';
    $params['status'] = $status;
}
$query .= ' ORDER BY dateCreated DESC';
$select = $db->prepare($query);
$select->execute($params);