簡體   English   中英

(PHP)如果,Else沒有正確檢索條件中的數據

[英](PHP) If, Else not retrieve data in the condition properly

這里有一個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”表中的第一個條件。 “New”條件將僅檢索“New”但沒有“Received”或“Checking”,因為我在條件中輸入,“Not qualified”條件將僅檢索“Failed”而沒有“Not qualified”。

我不知道這個。 條件有什么不對嗎?

干杯。

你的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')

試試這樣吧

mysql_query("SELECT * FROM application_data_file 
             WHERE Position_ID = '".$pos_id."' 
             AND Application_Status IN ('New','Received','Checking')");

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);

請仔細閱讀代碼。

我們只需要檢查位置ID的兩個條件:

NewNot qualified 對於No Condition ,沒有檢查。

因此,只添加兩個條件: NewNot 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中被棄用並完全刪除。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM