我需要帮助......我正在尝试从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;
}
}
答案 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);