PHP表单输入&mySQL空

PHP表单输入&mySQL空,php,mysql,forms,pdo,Php,Mysql,Forms,Pdo,我有一个表单可以将数据提交到PHP脚本。然后用脚本查询mySQL数据库以返回结果 表格: 问题是我搜索的一些字段在数据库中可能包含空值。例如,“phone”可以为空 因此,如果上面的表单中phone为空,并且表单已提交,我将不会看到phone为空的结果 我的查询正在查找…和类似电话的“%”,它排除了空值 有没有什么方法可以像“%whatever%”一样在手机上搜索,或者如果手机是空的,那么什么都没有 我也许可以把下面的东西拼凑起来,但我怀疑有更好的方法吗?我可能会在多个专栏中这样做 //

我有一个表单可以将数据提交到PHP脚本。然后用脚本查询mySQL数据库以返回结果

表格:

问题是我搜索的一些字段在数据库中可能包含空值。例如,“phone”可以为空

因此,如果上面的表单中phone为空,并且表单已提交,我将不会看到phone为空的结果

我的查询正在查找…和类似电话的“%”,它排除了空值

有没有什么方法可以像“%whatever%”一样在手机上搜索,或者如果手机是空的,那么什么都没有

我也许可以把下面的东西拼凑起来,但我怀疑有更好的方法吗?我可能会在多个专栏中这样做

    // if phone is entered, add to SQL query
    if(isset($_POST['phone'])) {
        $phone_qry = "AND phone LIKE :";
        $phone = "%".$_POST['phone']."%";
    }
    // if phone not entered, don't add to query
    else {
        $phone_qry = "";
        $phone = "";
    }


    $label = "%".$_POST['label']."%";
    $id = "%".$_POST['id']."%";
    $phone = "%".$_POST['phone']."%";
    $province = "%".$_POST['province']."%";

    $db->query("SELECT  id       AS 'Customer ID', 
                        label       AS 'Name', 
                        province    AS 'State', 
                        phone       AS 'Phone' 
                FROM customer 
                WHERE label     LIKE :label 
                AND   id        LIKE :id"
                . $phone_qry . $phone . " 
                AND   province  LIKE :province");
谢谢你,艾德其中COALESCELabel,比如:label工作得很好。正是我想要的。

尝试:WHERE COALESCELabel,如:label等。如果为空,则将标签更改为空字符串。
$label = "%".$_POST['label']."%";
$id = "%".$_POST['id']."%";
$phone = "%".$_POST['phone']."%";
$province = "%".$_POST['province']."%";

$db->query("SELECT  id       AS 'Customer ID', 
                    label       AS 'Name', 
                    province    AS 'State', 
                    phone       AS 'Phone' 
            FROM customer 
            WHERE label     LIKE :label 
            AND   id        LIKE :id
            AND   phone     LIKE :phone
            AND   province  LIKE :province");
    // if phone is entered, add to SQL query
    if(isset($_POST['phone'])) {
        $phone_qry = "AND phone LIKE :";
        $phone = "%".$_POST['phone']."%";
    }
    // if phone not entered, don't add to query
    else {
        $phone_qry = "";
        $phone = "";
    }


    $label = "%".$_POST['label']."%";
    $id = "%".$_POST['id']."%";
    $phone = "%".$_POST['phone']."%";
    $province = "%".$_POST['province']."%";

    $db->query("SELECT  id       AS 'Customer ID', 
                        label       AS 'Name', 
                        province    AS 'State', 
                        phone       AS 'Phone' 
                FROM customer 
                WHERE label     LIKE :label 
                AND   id        LIKE :id"
                . $phone_qry . $phone . " 
                AND   province  LIKE :province");