我这里有一个 If-Else 条件的问题。正如下面的代码,
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."' ");
}
">新"和"不合格"条件仅适用于"application_data_file"表中的第一个条件。"新"条件将仅检索"新",但没有检索"已接收"或"正在检查",因为我在条件中输入,"不合格"条件将仅检索"失败"而不检索"不合格"。
我对此一无所知。条件有什么问题吗?
干杯。
像这样尝试
mysql_query("SELECT * FROM application_data_file
WHERE Position_ID = '".$pos_id."'
AND Application_Status IN ('New','Received','Checking')");
您的 mysql 语法不正确
Application_Status = 'New' OR 'Received' OR 'Checking'
这应该是
Application_Status = 'New' OR Application_Status = 'Received' OR Application_Status = 'Checking'
或
Application_Status IN ('New','Received','Checking')
请仔细阅读代码。
在两种情况下,我们需要检查仓位 ID:
New
和Not qualified
.对于No Condition
,没有检查。
因此,仅添加两个条件:New
和Not qualified
。
获取一个位置 ID 数组,如果条件添加IN
子句,否则不执行任何操作。
// 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_* 函数,因为它们已被弃用和删除 由于安全原因,完全在 PHP 7 中。
SQL 语句格式不正确; 在您的情况下,我建议使用 IN 检查Application_Status字段(如下所示(;
$pos_id = mysql_real_escape_string($pos_id);
if($status == 'New') {
$query = "SELECT * FROM application_data_file"
. " WHERE Position_ID='" . $pos_id . "'"
. " AND Application_Status IN ('New', 'Received', 'Checking')";
} elseif ($status == 'Not qualified') {
$query = "SELECT * FROM application_data_file"
. " WHERE Position_ID='" . $pos_id . "'"
. " AND Application_Status IN ('Failed', 'Not qualified')";
} else {
// Includes the case where $status == 'No Condition'
$query = "SELECT * FROM application_data_file"
. " WHERE Position_ID='" . $pos_id . "'";
}
$resultx0 = mysql_query($query);