2014-02-25 81 views
1

工作這是我的update.php的代碼,我想我寫一個錯誤的代碼,但不能找出我做錯了就告訴我,我可以使用,如果情況是這樣更新不能在MySQL中

編輯--->我想要level1只更新level1區域中的一個字段,其他都應該保持不變,但是當我從一個更多的東西提交一個時,一個用戶看不到他們隱藏的另一個用戶的字段,

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']; 
} 
+0

你在哪裏寫了執行查詢的mysql_query()? – Jenz

+1

'沒有工作'是不夠的描述。請添加您收到的錯誤以及結果如何? –

回答

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

添加上月底

mysql_query($ sql);

有沒有錯誤?

1

更換

$sql="UPDATE `table1` SET `IndexNo` = '$IndexNo',`ZoneID` = '$ZoneID'"; 
      if($userName =='admin' || 'level1') 
      { 
       $sql .= ",`NameofCoordinator` = '$NameofCoordinator',`RegistrationSurveyDate` = '$RegistrationSurveyDate'"; 
      } 

      if($userName =='admin' || 'level2') 
      { 
       $sql .= ", `GridNumber` = '$GridNumber',`ESRCommandArea` = '$ESRCommandArea'"; 
      } 
      if($userName =='admin' || 'level3') 
      { 
       $sql .= ",`MobileNumber` = '$MobileNumber', `LandlineNumber` = '$LandlineNumber', `ConnectionCategory` = '$ConnectionCategory'"; 
      } 
       $sql .= ",`Keyword` = '$Keyword', `StatusID` = '$StatusID', `Comment`='$Comment' WHERE `ID` = ".$_REQUEST['update']; 


myql_query($sql) or die(); 
0

試試這個

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

或者,如果你想這樣做分離像你這樣做:

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

注:我已經推杆''到當if語句不返回時在每列中更新在條件中爲true,您可以將其更改爲您想要更新的任何值。

編輯>

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

我想要level1只更新level1區域中的字段,其他所有應該保持相同,但是當我從一個更多的事情提交一個級別的用戶不能看到他們隱藏的其他級別用戶的字段時,他們會變空, – user3283373

+0

@ user3283373我想我得到了你想要的東西試試我編輯的答案(最後一個查詢) –

0

1)首先,而不是分配您的文章數據變量,使用,因爲它們。 2)使用三元運算符,而不是你的,如果條件

檢查下面的代碼

如果(!空($ _ REQUEST [ '更新'])){ $ SQL = 「SELECT * FROM tabl1 WHERE ID =」 。$ _ REQUEST [ '更新']; $ query = mysql_query($ sql); $ res = mysql_fetch_array($ query);

$sql = "UPDATE `tabl1` SET `IndexNo` = '$_POST['IndexNo']',`ZoneID` = '$_POST['ZoneID']'"; 
$sql.= ($userName =='admin' || 'level1')?(",`NameofCoordinator` = '$_POST[\'NameofCoordinator\']'") 
     :(($userName =='admin' || 'level2')?(`GridNumber` = '$_POST[\'GridNumber\']'") 
     :(($userName =='admin' || 'level3')?(`MobileNumber` = '$_POST[\'MobileNumber\']'"):'')); 
$sql .= ",`Keyword` = '$Keyword', `StatusID` = '$_POST[\'StatusID\']' WHERE `ID` = ".$_REQUEST['update']; 

}