(PHP)如果,否则无法正确检索条件中的数据
我有一个问题,如果其他条件在这里。如下面的代码所示(PHP)如果,否则无法正确检索条件中的数据,php,mysql,if-statement,Php,Mysql,If Statement,我有一个问题,如果其他条件在这里。如下面的代码所示 if($status == 'New'){ $resultx0 = mysql_query("SELECT * FROM application_data_file WHERE Position_ID = '".$pos_id."' && Application_Status = 'New' OR 'Received' OR 'Checking' "); } elseif ($status == 'Not qual
if($status == 'New'){
$resultx0 = mysql_query("SELECT * FROM application_data_file WHERE Position_ID = '".$pos_id."' && Application_Status = 'New' OR 'Received' OR 'Checking' ");
}
elseif ($status == 'Not qualified'){
$resultx0 = mysql_query("SELECT * FROM application_data_file WHERE Position_ID = '".$pos_id."' && Application_Status = 'Failed' OR 'Not qualified' ");
}
elseif ($status == 'No Condition'){
$resultx0 = mysql_query("SELECT * FROM application_data_file WHERE Position_ID = '".$pos_id."' ");
}
“新”和“不合格”条件仅适用于“应用程序数据文件”表中的第一个条件。当我在条件中输入时,“新建”条件将只检索“新建”,但不检索“已接收”或“正在检查”,而“不合格”条件将只检索“失败”而不检索“不合格”
我对此一无所知。情况有什么问题吗
干杯。您的mysql语法不正确
Application\u Status='New'或'Received'或'Checking'
这应该是
Application\u Status='New'或Application\u Status='Received'或Application\u Status='Checking'
或
Application\u状态为('New'、'Received'、'Checking')
尝试如下
mysql_query("SELECT * FROM application_data_file
WHERE Position_ID = '".$pos_id."'
AND Application_Status IN ('New','Received','Checking')");
SQL语句的格式不正确;在您的情况下,我建议使用in检查Application_Status字段(如下所示)
请仔细阅读代码 我们只需要在两种情况下检查位置ID:
新建
和不合格
。对于无条件
,不进行检查
因此,只添加两个条件:New
和Not qualified
获取一个位置ID数组,如果条件是在子句中添加,则不执行任何操作
// Initiate a blank array
$positionIds = array();
$status = 'New';
if ($status == 'New') {
$positionIds[] = 'New';
$positionIds[] = 'Received';
$positionIds[] = 'Checking';
}
else if ($status == 'Not qualified') {
$positionIds[] = 'Failed';
$positionIds[] = 'Not qualified';
}
$sql = "SELECT * FROM application_data_file WHERE Position_ID = '".$pos_id."";
if (! empty($positionIds)) {
$comma_separated = implode("','", $positionIds);
$comma_separated = "'".$comma_separated."'";
$sql .= " AND Application_Status IN ( " . $comma_separated . ")";
}
$resultx0 = mysql_query($sql);
请不要使用mysql_*函数,因为它们已被弃用和删除
由于安全原因,完全使用PHP7
我认为问题不在于if-else。我认为您的问题在于SQL SELECT语句中的WHERE子句。“或“Received”
”的计算结果为或0
,这相当于或FALSE
。正在将'application_status'列与单个值'New'进行比较。语句``或'Received'或'Checking'的其余部分将被MySQL丢弃,因为这相当于或FALSE或FALSE
应用程序的状态strings@Dagon,谢谢你的评论。我完全错过了。我已经更正了我的答案。
// Initiate a blank array
$positionIds = array();
$status = 'New';
if ($status == 'New') {
$positionIds[] = 'New';
$positionIds[] = 'Received';
$positionIds[] = 'Checking';
}
else if ($status == 'Not qualified') {
$positionIds[] = 'Failed';
$positionIds[] = 'Not qualified';
}
$sql = "SELECT * FROM application_data_file WHERE Position_ID = '".$pos_id."";
if (! empty($positionIds)) {
$comma_separated = implode("','", $positionIds);
$comma_separated = "'".$comma_separated."'";
$sql .= " AND Application_Status IN ( " . $comma_separated . ")";
}
$resultx0 = mysql_query($sql);