Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/241.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
(PHP)如果,否则无法正确检索条件中的数据_Php_Mysql_If Statement - Fatal编程技术网

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