首页 > 解决方案 > PHP 如果 $_GET 为空,则从数据库中选择所有内容

问题描述

如果用户没有在下拉菜单中选择任何内容或选择他在那里选择的内容,我会尝试从我的数据库中选择所有内容。所以基本上我想做的是检查 $filter 是否为空,如果是,则选择所有内容,但不知道该怎么做。这是我的选择,如果我从下拉列表中选择某些东西,它会很好用,但是在我选择某些东西之前,它会给出未定义的索引警告。

<?php
$visibility = 1;
$filter = $_GET['slct'];
$stmt = $conn->prepare("SELECT id, name, description, address, phone, phone2, email, company, job, visibility, filter, confirmed, userid FROM cards WHERE visibility = ? AND filter = ?");
$stmt->bind_param("is", $visibility, $filter);
$stmt->execute();
$result = $stmt->get_result();
while ($record = mysqli_fetch_assoc($result)) {
?>

和选择:

<select name="slct" id="slct" onchange="form.submit()">
<option value="One">One</option>
<option value="Two">Two</option>
</select>

标签: phpsql

解决方案


首先获取全局slct

$visibility = 1; 
$filter = isset($_GET['slct']) ? $_GET['slct'] : "";

尝试构造查询是否slct设置后

$baseQuery = "SELECT id, name, description, address, phone, phone2, email, company, job, visibility, filter, confirmed, userid FROM cards WHERE visibility = ?" ;
$filterPart = isset($_GET['slct']) ? " AND filter = ?" : "";

准备语句并相应地绑定参数并执行

$stmt = $conn->prepare( $baseQuery. $filterPart);
if(isset($_GET['slct'])){
    $stmt->bind_param("is", $visibility, $filter);
}else{
   $stmt->bind_param("is", $visibility);
} 
$stmt->execute(); 

推荐阅读