如果输入值为空,则mysql显示all

时间:2015-12-15 14:56:36

标签: php mysql

我有一个包含3个输入字段的查询,我希望查询显示结果,如果填写了一个或两个或所有3个输入。所以,我尝试使用is null,但它不起作用或我可以做这有一个和/或查询?

$sql = "SELECT * FROM profiles";
    $sql .= " WHERE (profilename = '". $_POST["profilename"] ."' OR profilename IS NULL) ";
    $sql .= " AND (ort = '". $_POST["ort"] ."' OR ort IS NULL) ";
    $sql .= "AND (jahren = '" . $_POST["alter"] . "' OR jahren IS NULL) ";

非常感谢你的帮助!

3 个答案:

答案 0 :(得分:0)

试试这个:

$sql = "
    SELECT * FROM profiles
    WHERE (profilename = '$_POST[profilename]' OR profilname = NULL)
    OR (ort = '$_POST[ort]' OR ort = NULL)
    OR (jahren = '$_POST[alter]' OR jahren = NULL)
";

<强>建议:

$string = "Test $test also";优于$string = "Test " . $test . " also";。 仅当您添加"时,才会'

<强> 被修改..

答案 1 :(得分:0)

在发送查询之前检查是否填写了任何输入字段:

if ( isset($_POST['profilename']) || isset($_POST['ort']) || isset($_POST['alter']) ){
    $clause = "where ";
    $conds = [];
    if (!empty($_POST['profilename'])) $conds[] = "profilename = '{$_POST['profilename']}'";
    if (!empty($_POST['ort'])) $conds[] = "ort = '{$_POST['ort']}'";
    if (!empty($_POST['alter'])) $conds[] = "alter = '{$_POST['alter']}'"; 
    if(count($conds) > 0){
       $clause .= (count($conds) == 1)? $conds[0] : implode(' AND ',$conds);
        $sql = "SELECT * FROM profiles " . $clause;
        ...
        // sending query
    }

}

答案 2 :(得分:0)

我会将您的代码更新为以下内容:

$sql = "SELECT * FROM profiles WHERE 1=1";
/* We use 'WHERE 1=1' so that we can chain all of our filters after this
using 'AND' (or 'OR' in other situations) regardless of whether we are using the first of these filters or not */

if(isset($_POST["profilename"]) && $_POST["profilename"] != "") 
     $sql .= " AND profilename = '". $_POST["profilename"] ."'";

if(isset($_POST["ort"]) && $_POST["ort"] != "") 
     $sql .= " AND ort = '". $_POST["ort"] ."'";

if(isset($_POST["alter"]) && $_POST["alter"] != "") 
     $sql .= " AND jahren = '" . $_POST["alter"] . "'";

这将检查每个变量,然后将其包含在查询中。 对于其他POST变量,只需以相同的格式复制和粘贴它们。

另外,我建议使用预准备语句而不是内联转储POST变量,以避免SQL注入攻击等。

在此处阅读更多内容:PHP: Prepared statements and stored procedures