2012-06-13 112 views
3

我有一個奇怪的問題:我的if和else語句都在執行。這裏是我的代碼:if和else語句都會執行

if ($sel_user['name'] != $name) { 
     $query = "UPDATE owner SET 
       ..." 
     $result = mysql_query($query); 
     if (mysql_affected_rows() ==1) { 
      $query2 = "UPDATE queue_acl SET 
       ..." 
      $result2 = mysql_query($query2); 
      if (mysql_affected_rows() ==1) { 
       $_SESSION['updates_occurred'] = true; 
      } else { 
       $_SESSION['updates_occurred'] = false; 
      } 
     } 
    } 

    if ($sel_user['orgId'] != $orgId) {  
     $query = "UPDATE ownerOrganization SET 
       ..." 
     $result = mysql_query($query); 
     if (mysql_affected_rows() ==1) { 
      $query2 = "UPDATE queue_acl SET 
       ..." 
      $result2 = mysql_query($query2); 
      if (mysql_affected_rows() ==1) { 
       $_SESSION['updates_occurred'] = true; 
      } else { 
       $_SESSION['updates_occurred'] = false; 
      } 
     } 
    } 

    if ($sel_user['date_expires'] != $colVal[0] || 
      $sel_user['admin'] != $colVal[4]) { 
     $query3 = "UPDATE queue_acl SET 
       ..." 
     $result3 = mysql_query($query3); 
     if (mysql_affected_rows() ==1){ 
      $_SESSION['updates_occurred'] = true; 
     } else {   
      $_SESSION['updates_occurred'] = false; 
     }     
    } else { 
     $_SESSION['updates_occurred'] = false;  
     $message = "<i>There were no edits to apply</i>"; 
    } 

當我運行此,查詢被髮送,一切都正在更新不錯,但也正在打印「目前還沒有修改」的消息

任何人都知道爲什麼嗎?

編輯:我做不是想使用elseif語句;這些事件並不相互排斥。也就是說,如果$ sel_user [ '名稱']!= $ name和$ sel_user [ 'ORGID']!= $ ORGID,則要求兩個查詢做大量的IFS的發送

回答

8

如果你不想在if/else if語句中包含所有內容,可以在每次if檢查結束時設置一個標誌。

if($sel_user['name'] != $name) { 
    // CODE HERE 
    $flag = true; 
} 

if(!$flag){ 
    $message = "<i>There were no edits to apply</i>"; 
} 

它,否則,你可以運行,如果檢查了$ _SESSION [ 'updates_occurred']

+0

+1澄清他的問題後,很明顯,OP想要運行所有這三個並報告是否沒有運行。 –

+0

這是一個很好的建議 - 修復它。謝謝Tim :-) – nv39

+0

不客氣! – Telshin

8

相反,應該做elseifs

if() { 


} elseif() { 


} else { 

} 

希望幫助。

+0

絕對正確的意見。以這些錯誤跳出你的方式考慮你的代碼。這是一個很好的步驟。 我建議不要在'} else {'樣式中寫入。你希望你的'if'和配對'else if'和'else'縮進同一層。 – djechlin

+0

感謝您的建議,但那不是我想要的。我沒有使用elseif語句,因爲我不希望更新是互斥的;可以執行多個聲明 – nv39

+0

嗨eigen,看起來像Tim的排序,但它確實使這個問題相當具有誤導性。 –

0
if(!printf("Hello")) { 
    echo "Hello"; 
} 
else { 
    echo " World"; 
}