向elseif语句添加条件

时间:2011-08-04 17:33:38

标签: php mysql

我在这个功能中哪里出错了?我要求它提取具有今年提醒日期的用户(单独使用),如果类型等于电子邮件或呼叫(此部分不起作用)。谢谢!

elseif 

($_GET['reminder'] == 'thisyear' 
&&(isset($_GET['type'])
 && in_array($_GET['type'], array('Email', 'Call'))))
 {     
 $thisyear = date('Y-m-d');     
 $todotype = $_GET['type'];
 $query = "SELECT * FROM contacttodo,contacts WHERE contacttodo.contacts_id = contacts.ID AND YEAR(reminder) = YEAR(CURDATE()) AND contacttodo.type = '".$todotype."' ORDER BY contacttodo.reminder ASC"; 
 } 

更新:这不会返回任何记录,并且有几个同时包含'call'和'email'

 elseif 
($_GET['reminder'] == 'thisyear'   
&& (isset($_GET['type'])
&& in_array($_GET['type'], array('Email', 'Call'))))
{   
$thisyear = date('Y-m-d');     
$todotype = $_GET['type'];
$query = "SELECT * FROM contacttodo,contacts WHERE contacttodo.contacts_id = contacts.ID AND YEAR(reminder) = YEAR(CURDATE()) AND contacttodo.type = '".$todotype."' ORDER BY contacttodo.reminder ASC"; 
}

2 个答案:

答案 0 :(得分:1)

您在第一个和第二个标准之间错过了一个操作员。试试&&||

elseif ($_GET['reminder'] == 'thisyear'
    && isset($_GET['type'])
    && in_array($_GET['type'], array('Email', 'Call'))
) {
    ...
}

更新:修正了括号,清理了空格。

答案 1 :(得分:0)

问题中的代码,包括缺少的左括号和缺少的运算符:

elseif( ($_GET['reminder'] == 'thisyear') 
    &&  isset($_GET['type'])
    &&  in_array($_GET['type'], array('Email', 'Call')))
{     
    /* … */
}

错误“意外的T_BOOLEAN_AND”来自&&在elseif条件之后:

elseif($_GET['reminder'] == 'thisyear')    /* no statement here */

&& (isset($_GET['type']) /* some weird code, resulting in unexpected T_BOOLEAN_AND */

更新:“这只会返回一个类型为'call'的记录”

也许您的电子邮件没有将提醒设置为“今年”。尝试:

elseif( ($_GET['reminder'] == 'thisyear') 
    || ( isset($_GET['type']) && in_array($_GET['type'], array('Email', 'Call')) ) )
{     
    /* … */
}