3

奇妙な問題があります。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']!= $ name AND $ sel_user ['orgId']!= $ orgIdの場合、両方のクエリを送信する必要があります

4

3 に答える 3

8

多くのifを行う代わりに、elseifを行うべきです

すなわち

if () {


} elseif () {


} else {

}

それが役立つことを願っています。

于 2012-06-13T15:14:25.597 に答える
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>";
}

それか、if check off $_SESSION['updates_occurred'] を実行できます

于 2012-06-13T15:33:30.677 に答える
0
if(!printf("Hello")) {
    echo "Hello";
}
else {
    echo " World";
}
于 2016-09-05T13:08:14.390 に答える