【问题标题】:php else statement for empty search空搜索的 php else 语句
【发布时间】:2015-12-16 11:53:47
【问题描述】:

我有一个搜索功能,它匹配数据库中的关键字并回显一些 html,但我缺少如何启用空搜索的处理。我可以使用 else 语句还是必须重新定义相同的参数并使用 !isset for if not set?

<?php
$con = mysqli_connect("localhost", "database", "password", "table");
if (isset($_GET['search'])) {
    $search_query = $_GET['search_query'];

    global $con;
    $get_item = "select * from database where keywords like '%$search_query%'";
    $run_item = mysqli_query($con, $get_item);
    while ($row_item = mysqli_fetch_array($run_item)) {

        $item_keywords = $row_item['item_keywords'];

        echo "Search found for $search_query";
    } // working fine up to here
} else {
    echo "Search not found for $search_query";
}
?>

【问题讨论】:

    标签: php mysql if-statement search keyword


    【解决方案1】:

    您可以使用isset()mysqli_num_rows() 来检查空结果。并使用mysqli_real_escape_string 触发您的查询

     if (isset($_GET['search'])) {
        if (isset($_GET['search_query']) && $_GET['search_query'] != "") {/// check variable is set or not
            $search_query = $_GET['search_query'];
            $$search_query = mysqli_real_escape_string($con, $search_query);//
            $get_item = "select * from `database` where `keywords` like '%$search_query%'";
            $run_item = mysqli_query($con, $get_item);
            $row_cnt = mysqli_num_rows($run_item); // count number of rows
            if ($row_cnt > 0) {
                while ($row_item = mysqli_fetch_array($run_item)) {
                    $item_keywords = $row_item['item_keywords'];
                    echo "Search found for $item_keywords";
                }
            } else {
                echo "Search not found for $item_keywords";
            }
        } else {
            echo "Search not found for $item_keywords";
        }
    }
    

    【讨论】:

    • 这个问题的最佳答案。我会添加一条关于 SQL 注入的注释。
    • 感谢 @chris85 我已添加 mysqli_real_escape_string 以防止 SQL 注入
    【解决方案2】:

    将您的条件更改为:

    if (isset($_GET['search']) && trim($_GET['search_query']) != '') { 
    
    }
    

    【讨论】:

      【解决方案3】:

      您可以像这样为空搜索设置条件。

      if (isset($_GET['search']) && trim($_GET['search']) !='') { ... }
      

      【讨论】:

      • @Steven 你总是可以通过点击投票部分下的勾号来接受这个答案!
      • 为什么不直接使用empty?这如何判断是否有记录?
      • @chris85 如果有人提交了空间,则空条件不起作用。所以我们必须修剪那个搜索变量,然后我们可以将它设置为空条件。
      【解决方案4】:

      修改你的 if 条件

      if (isset($_GET['search']) && !empty($_GET['search_query'])) { 
      
      }
      

      【讨论】:

      • 这并不能说明是否有记录。也应该在search GET 上使用!empty,目前允许它为空。
      【解决方案5】:

      您可以使用empty 函数来做到这一点:

      if (!empty($_GET['search'])) {
          //your code
      }
      

      【讨论】:

      • 为什么是isset?这并不能说明是否有记录。
      猜你喜欢
      • 2021-01-06
      • 1970-01-01
      • 2014-09-14
      • 1970-01-01
      • 1970-01-01
      • 2015-11-08
      • 1970-01-01
      • 2015-07-07
      • 1970-01-01
      相关资源
      最近更新 更多