2014-02-25 21 views
0

我想要更新的嚴格條件,但它不在這裏工作。我的意思是如果level1用戶登錄並更新一個來自並提交這個領域屬於level2獲得空。 我從用戶級別輸入並僅輸入它們。還有隱藏的字段也用空值更新。有辦法只更新用戶級別字段而不影響隱藏字段。或操作員不嚴格在MySQL中工作php

if(!empty($_REQUEST['update'])){ 
    $sql = "SELECT * FROM `tabl1` WHERE `ID` = ".$_REQUEST['update']; 
    $query = mysql_query($sql); 
    $res = mysql_fetch_array($query); 

    $IndexNo= $_POST['IndexNo']; 
    $ZoneID = $_POST['ZoneID']; 
    $NameofCoordinator= $_POST['NameofCoordinator']; 
    $GridNumber= $_POST['GridNumber']; 
    $MobileNumber= $_POST['MobileNumber']; 
    $StatusID= $_POST['StatusID']; 

    $sql="UPDATE `tabl1` SET `IndexNo` = '$IndexNo',`ZoneID` = '$ZoneID'"; 
    $sql .= if($userName =='admin' || 'level1'){ ",`NameofCoordinator` = '$NameofCoordinator'"; } 
    $sql .= if($userName =='admin' || 'level2'){ ", `GridNumber` = '$GridNumber'"; } 
    $sql .= if($userName =='admin' || 'level3'){ ",`MobileNumber` = '$MobileNumber'"; } 
    $sql .= ",`Keyword` = '$Keyword', `StatusID` = '$StatusID' WHERE `ID` = ".$_REQUEST['update']; 
} 
+1

''levelX''是不是一個比較 – kero

+0

此外,你的代碼是可怕容易受到SQL注入。請參閱http://www.php.net/manual/en/security.database.sql-injection.php例如,如果$ _REQUEST ['update']'爲'999 OR 1 = 1',則查詢將更新表中的_all_行。 – Piskvor

+0

什麼數據庫字段包含級別信息(level1,level2等)? – Agilox

回答

3

http://www.php.net/manual/en/language.operators.logical.php

$a || $b Or TRUE if either $a or $b is TRUE. 

所以,$userName =='admin' || 'level3'計算結果爲($userName =='admin') || ('level3'),由於'level3'不falsy,這將始終評估爲true

你可能想要的是

$userName == 'admin' || $userName == 'level3' 
+0

如果level1用戶登錄並更新a和提交此字段屬於level2獲得空 – user3283373

+0

@ user3283373:您是否按照我的示例嘗試修復?請注意,您需要在每一行中更改它。 – Piskvor