或运算符严格在mysql php中工作

时间:2014-02-25 13:17:52

标签: php mysql

我想要一个更新的严格条件,但它在这里不起作用。我的意思是如果level1用户登录并更新一个from并通过这个字段提交属于level2获取为空。 我来自用户级别并仅输入它们。隐藏字段也使用空值更新。有办法只更新用户级别字段而不影响隐藏字段。

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 个答案:

答案 0 :(得分: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'不是假的,因此总是评估为true

你可能想要的是

$userName == 'admin' || $userName == 'level3'