【问题标题】:the only fields filled by the user going to the query [duplicate]用户填写的唯一字段去查询[重复]
【发布时间】:2016-03-29 00:21:21
【问题描述】:

我想根据用户输入过滤来自 sql 的数据。问题是我有 3 个字段,例如(职位、身份、雇主)。但如果用户没有输入某个字段(例如字段雇主),则该字段将不会包含在查询中(where 子句)。

这是我的问题

$result_set = mysqli_query($connection, "
SELECT fname, mname, lname, contactno ...
FROM tblapplicant, tblreq
WHERE tblapplicant.appid = tblreq.appid AND stat= '$a' AND emp= '$b' AND hired_pos= '$c'
");

【问题讨论】:

    标签: php sql


    【解决方案1】:

    尝试使用OR 而不是AND

    SELECT fname,mname,lname,contactno ...
    FROM tblapplicant 
    inner join tblreq 
            on tblapplicant.appid=tblreq.appid 
    where (stat= '$a' and  $a is not null)
       or (emp= '$b'  and $b is not null)
       or (hired_pos= '$c' and $c is not null)
    

    【讨论】:

    • 或者宁可改变查询的意思
    【解决方案2】:

    您可以有条件地附加附加条件。

    $sql = 'SELECT fname, mname, lname, contactno ...
    FROM tblapplicant, tblreq
    WHERE tblapplicant.appid = tblreq.appid ';
    
    if ($a) { $sql .= "AND stat='$a' "; }
    if ($b) { $sql .= "AND emp='$b' "; }
    if ($c) { $sql .= "AND hired_pos='$c' "; }
    
    $result_set = mysqli_query($connection, $sql);
    

    【讨论】:

    • 对不起,我是 mysqli 的新手,我收到了这个错误“可捕获的致命错误:类 mysqli_result 的对象无法转换为字符串...
    • 该错误不可能来自我们在这里使用的代码。执行查询后是否尝试echo 结果集?
    • 是的,它必须显示(回显)@Don't Panic。
    • 在你上面给出的代码之后我把这个.. $count= mysqli_num_rows($sql); if (mysqli_num_rows($sql) == 0) { echo " 还没有记录..."; } else { while($row = mysqli_fetch_array($sql)) { echo "something..."; @不要惊慌
    猜你喜欢
    • 2020-12-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-01
    • 1970-01-01
    • 2018-01-05
    • 1970-01-01
    相关资源
    最近更新 更多