如果变量$ where email和$ whereNoteMail为空或空名,则SQL查询应选择所有行



以下查询如果变量$ white email或varible $ whereNoteMail或两者都是空的。

$whereEmail = "'abc@gmail.com','def@hotmail.com'";
$whereNotEmail = "'u2u@xyz.com','u3u@xyz.com'";
$result = $mSearch->dao->query(sprintf('
SELECT * FROM table
WHERE email IN (%s)
AND email NOT IN (%s)
', $whereEmail, $whereNotEmail ));

变量$ where email和$ wherenotemail中的电子邮件地址使用php函数存储,在某些情况下它们是空的或空的。

我希望两个变量$ where email和$ whereNoteMail为空,查询应从表中选择所有行。

类似地,我希望如果每次邮件为空的变量$,则查询应在表中选择所有行,除非电子邮件地址在可变$ WHERENOTEMAIL中。

同样,我希望如果可变$ whereNoteMail为空,则查询应在可变$ white email中的电子邮件地址选择所有行。

//您必须设置条件,而在email notemail notem,whereNoteMail希望这可以正常工作

$whereEmail = "'abc@gmail.com','def@hotmail.com'";
$whereNotEmail = "'u2u@xyz.com','u3u@xyz.com'"; 
if($whereEmail != ''){
$result = $mSearch->dao->query(sprintf('
SELECT * FROM table
WHERE email IN (%s)
', $whereEmail ));
}else{
$result = $mSearch->dao->query(sprintf('
SELECT * FROM table
WHERE email NOT IN (%s)
', $whereNotEmail ));
}

我希望两个变量$ where email和$ whereNoteMail是 清除查询应从表中选择所有行。

否,查询了解SQL语言构造而不是PHP,因此您必须检查并相应地进行检查。如果我是您,那么将验证两个列表是否为空。如果为空,则弹出验证消息可能会将其传递给查询。(或)如果任何列表为空,则可以从查询中放弃该条件。

如果我正确理解,您可以尝试以下方法:开始构建一个查询,以选择所有行并添加条件,如果这些电子邮件阵列不是空

    $whereEmail = array('abc@gmail.com','def@hotmail.com');
    $whereNotEmail = array('u2u@xyz.com','u3u@xyz.com');
    $query = 'SELECT * FROM `table` WHERE 1';
    if(!empty($whereEmail)) {
            $validEmailsString = implode('","', $whereEmail);
            $query .= ' AND email IN ("'.$validEmailsString.'")';
    }
    if (!empty($whereNotEmail)) {
            $invalidEmailsString = implode('","', $whereNotEmail);
            $query .= ' AND email NOT IN ("'.$invalidEmailsString.'")';
    }
    print $query;
    $result = $mSearch->dao->query($query);

相关内容

  • 没有找到相关文章

最新更新