如果在 PHP 中设置为空且不为空?

if isset empty and if not empty in PHP?

我正在尝试查看是否 isset is empty,如果是,那么我想做其他事情。

我的表单中有几个复选框 ONE input field (hidden field and its name is keyword2)。如果用户选中任何复选框并提交表单,他们将收到来自 mysql 数据库的请求信息。这工作正常并且应该如此。

在页面加载时,none 个复选框被选中,但输入字段始终有一个值,并且永远不会为空。

因此,如果用户在未选中任何复选框的情况下提交表单,我将尝试在页面加载时加载一些其他 data/information!

这是我到目前为止所做的:

<?php
$searchList = "";
$clause = " WHERE ";//Initial clause
$sql="SELECT *
FROM `yt`
INNER JOIN `ATTRIBUTES` ON yt.id=ATTRIBUTES.id";//Query stub
    if(isset($_POST['keyword']) && !empty($_POST['keyword'])){

        foreach($_POST['keyword'] as $c){
            if(!empty($c)){
                $keyword2 = $_POST['keyword2'];
                ##NOPE##$sql .= $clause."`".$c."` LIKE '%{$c}%'";
                $sql .= $clause . " (ATTRIBUTES.sizes LIKE BINARY '$c' OR ATTRIBUTES.colors LIKE BINARY '$c') AND ATTRIBUTES.type='$keyword2'";
                $clause = " OR ";//Change  to OR after 1st WHERE
            }
        }
        $sql .= " GROUP BY yt.id";
        $query = mysqli_query($db_conx, $sql);
            $productCount = mysqli_num_rows($query);
            if ($productCount > 0) {
                while($row = mysqli_fetch_array($query, MYSQLI_ASSOC)){
             $id = $row["id"];
             $product_name = $row["product_name"];
                   $searchList .= '<a class="overlay" href="product.php?id='.$id.'"></a>';
                }
            }
        }

        ///////////////IF EMPTY////////////////
if(isset($_POST['keyword']) && empty($_POST['keyword'])){
   $keyword2 = $_POST['keyword2'];
   $sql = "SELECT * FROM ATTRIBUTES WHERE type='$keyword2'";
   $query = mysqli_query($db_conx, $sql);
   $productCount = mysqli_num_rows($query );
            $productCount = mysqli_num_rows($query);
            if ($productCount > 0) {
                while($row = mysqli_fetch_array($query, MYSQLI_ASSOC)){
             $id = $row["id"];
             $product_name = $row["product_name"];
                   $searchList .= '<a class="overlay" href="product.php?id='.$id.'"></a>';
                }
            }
        }
?>

正如您在上面的代码中看到的,我首先检查复选框($keyword)是否为空,如果不为空,我会做一些事情,这工作正常。

在代码的第二部分,我正在检查它是否为空,如果是,那么我想做其他事情,但这实际上不起作用,就好像它没有检查它一样为空,提交表格后我不会得到任何结果。

我希望我解释得当,以便有人可以帮助我。

如有任何帮助,我们将不胜感激。

提前致谢。

当 HTML 中的复选框未勾选时,PHP 根本不会接收变量。

您只需使用 array_key_exists():

检查密钥是否存在
if( !array_key_exists('keyword', $_POST) )
{
    // The checkbox was not checked 
    // or at least there is no 'keyword' key in the $_POST array.
}