从sql获取数组并检查条件

时间:2016-04-13 05:18:29

标签: php sql arrays while-loop

我需要帮助......我正在尝试从sql表中检索数据,并将其与if语句进行比较以获取某些ID并按顺序更新变量。但似乎变量由于某种原因没有更新。以下是我的代码..

$query2 = "SELECT prcID, tProDone 
          FROM vw_fdwTracker
          WHERE AgrNo = '$agreement'";  

$result2= sqlsrv_query($conn, $query2);
    if ($result2==false){
        die( "<pre>".print_r(sqlsrv_errors(), true));
    }   

$current = 0;       
while($id= sqlsrv_fetch_array($result2, SQLSRV_FETCH_ASSOC)){       

    //echo $id['prcID']." ". $id['tProDone'].'<br>';

    if(($id['prcID']===3) && ($id['tProDone']===TRUE)){
        $current=12.5;
    }elseif(($id['prcID']===4) && ($id['tProDone']===TRUE)){
        $current=25;
    }elseif(($id['prcID']===5) && ($id['tProDone']===TRUE)){
        $current=37.5;
    }elseif(($id['prcID']===9) && ($id['tProDone']===TRUE)){
        $current=50;
    }elseif(($id['prcID']===10) && ($id['tProDone']===TRUE)){
        $current=62.5;
    }elseif(($id['prcID']===14) && ($id['tProDone']===TRUE)){
        $current=75;
    }elseif(($id['prcID']===12) && ($id['tProDone']===TRUE)){
        $current=87.5;
    }elseif(($id['prcID']===17) && ($id['tProDone']===TRUE)){
        $current=100;
    }else{
        $current=0;
    }
}

2 个答案:

答案 0 :(得分:0)

您不需要在代码启动时定义$ current变量值,只需执行下面的代码,它也可以在循环中工作

$id['prcID']=3;
$id['tProDone']=false;   

if(($id['prcID']==3) && ($id['tProDone']==true)){
   $current=12.5;
}else{
   $current=0;
}
echo $current;

答案 1 :(得分:0)

尝试保存到数组,以便了解它是否正常工作:

function getCurrentArr($agreement,$conn)
    {
        $query = "SELECT prcID, tProDone FROM vw_fdwTracker WHERE AgrNo = '$agreement'";
        $result  =  sqlsrv_query($conn, $query);
        if(!$result){
            die( "<pre>".print_r(sqlsrv_errors(), true));
        }

        return $result;
    }

function getCurrVal($value)
    {
        $return[3]    =    12.5;
        $return[4]    =    25;
        $return[5]    =    37.5;
        $return[9]    =    50;
        $return[10]   =    62.5;
        $return[14]   =    75;
        $return[12]   =    87.5;
        $return[17]   =    100;
        return (isset($return[$value]))? $return[$value] : 0;
    }

$curr    =  array();
$result  =  getCurrentArr($agreement,$conn);
while($id= sqlsrv_fetch_array($result, SQLSRV_FETCH_ASSOC)){
    if(!$id['tProDone']) {
        $curr[]    =    0;
        continue;
    }

    $curr[]    =    getCurrVal($id['prcID']);
}
// See what this gets you for an array
// If what is in this array is what you expect, then
// make the $curr array the variable, but you will overwrite
// every time it loops, just keep that in mind
print_r($curr);