我在这个功能中哪里出错了?我要求它提取具有今年提醒日期的用户(单独使用),如果类型等于电子邮件或呼叫(此部分不起作用)。谢谢!
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";
}
答案 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')) ) )
{
/* … */
}