以下查询如果变量$ 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);