简体   繁体   English

搜索查询不适用于PHP

[英]Search query not working in PHP

My search query not working when I search with empty field(String) it returns all result 当我使用空字段(字符串)搜索时,我的搜索查询不起作用,它返回所有结果

Here is the code: 这是代码:

if(isset($_GET['submit1']))
{
    $skills=trim($_GET['skillset']);
    $city=trim($_GET['city']);
    $state=trim($_GET['state']);
    $expinmonth=trim($_GET['expinmonth']);

    $result = mysqli_query($dbc,"select * from seeker where (skillset like '%$skills%') or (city like '%$city%') or (state like '%$state%') or  (expinmonth like '%$expinmonth%')");          

    if(!mysqli_num_rows($result) == 0)
    {
        while($data = mysqli_fetch_array($result))
        { 
            echo .$data['fname'].' '.$data['lname']; 
        }
    }
    else 
    {
        echo 'No Results';
    }
}

I suspect what you are trying to do is check for blank fields when a field is skipped. 我怀疑您要执行的操作是跳过某个字段时检查空白字段。 In which case something like this:- 在这种情况下:

<?php

if(isset($_GET['submit1']))
{
    $skills = mysqli_real_escape_string($dbc, trim($_GET['skillset']));
    $city = mysqli_real_escape_string($dbc, trim($_GET['city']));
    $state = mysqli_real_escape_string($dbc, trim($_GET['state']));
    $expinmonth = mysqli_real_escape_string($dbc, trim($_GET['expinmonth']));

    $result = mysqli_query($dbc,"select * 
                                from seeker 
                                where ".(($skills == '' ) ? "skillset = ''" : "skillset like '%$skills%'")."
                                or ".(($city == '' ) ? "city = ''" : "city like '%$city%'" )."
                                or ".(($state == '' ) ? "state = ''" : "state like '%$state%'")."
                                or ".(($expinmonth == '' ) ? "expinmonth = ''" : "expinmonth like '%$expinmonth%'")." ");          

    if(!mysqli_num_rows($result) == 0)
    {
        while($data = mysqli_fetch_array($result))
        { 
            echo .$data['fname'].' '.$data['lname']; 
        }
    }
    else 
    {
        echo 'No Results';
    }
}

?>

Further to the comment by DrCopyPaste, if you just want to ignore blank input:- 如果您只想忽略空白输入,那么在DrCopyPaste的评论之后:-

<?php

if(isset($_GET['submit1']))
{
    $skills = mysqli_real_escape_string($dbc, trim($_GET['skillset']));
    $city = mysqli_real_escape_string($dbc, trim($_GET['city']));
    $state = mysqli_real_escape_string($dbc, trim($_GET['state']));
    $expinmonth = mysqli_real_escape_string($dbc, trim($_GET['expinmonth']));

    $result = mysqli_query($dbc,"select * 
                                from seeker 
                                where 1=2
                                ".(($skills != '' ) ? " OR skillset like '%$skills%'" : "")."
                                ".(($city != '' ) ? " OR city like '%$city%'" : "")."
                                ".(($state != '' ) ? " OR state like '%$state%'" : "")."
                                ".(($expinmonth != '' ) ? " OR expinmonth like '%$expinmonth%'" : "")." ");          

    if(!mysqli_num_rows($result) == 0)
    {
        while($data = mysqli_fetch_array($result))
        { 
            echo .$data['fname'].' '.$data['lname']; 
        }
    }
    else 
    {
        echo 'No Results';
    }
}

?>

Try like this...Just a little change in your query 尝试这样...只是查询中的一点变化

if(isset($_GET['submit1']))
{
    $skills=trim($_GET['skillset']);
    $city=trim($_GET['city']);
    $state=trim($_GET['state']);
    $expinmonth=trim($_GET['expinmonth']);

    $result = mysqli_query($dbc,"select * from seeker where (skillset like '%$skills%' and skillset <> '') or (city like '%$city%' and city <> '') or (state like '%$state%' and state <> '') or  (expinmonth like '%$expinmonth%' and expinmonth <> '')");          

    if(!mysqli_num_rows($result) == 0)
    {
        while($data = mysqli_fetch_array($result))
        { 
            echo .$data['fname'].' '.$data['lname']; 
        }
    }
    else 
    {
        echo 'No Results';
    }
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM