2010-04-21 4 views
0

J'ai un problème avec un système d'invitation. L'instruction if semble rompre. Il affiche le message "Fail" mais l'instruction UPDATE s'exécute toujours. Pourquoi les deux THEN et ELSE s'exécutent-ils?Aide avec IF alors rupture lors de la comparaison des résultats de la requête MYSQL

$dbConn = new dbConn(); 

// Check if POST user_username and user_hash are matching and valid; both are hidden for fields 
$sql = "SELECT user_username " 
    . "FROM table_users " 
    . "WHERE user_id=".mysql_real_escape_string($_POST["user_id"])." " 
    . "AND user_hash='".mysql_real_escape_string($_POST["user_hash"])."' " 
    . "AND user_enabled=0;"; 
$objUser = $dbConn->query($sql); 

// If result contains 1 or more rows 
if(mysql_num_rows($objUser) != NULL){ 
    $objUser = mysql_fetch_assoc($objUser); 

    $ssnUser->login($objUser["user_username"]); 

    $sql = "UPDATE table_users SET " 
     . "user_enabled=1, " 
     . "user_first_name='".mysql_real_escape_string($_POST["user_first_name"])."', " 
     . "user_last_name='".mysql_real_escape_string($_POST["user_last_name"])."', " 
     . "user_password='".mysql_real_escape_string(md5($_POST["user_password"]))."' " 
     . "WHERE user_id=".mysql_real_escape_string($_POST["user_id"]).";"; 
    $dbConn->query($sql); 

    echo "Success"; 
    header("Refresh: 5; url=/account/?action=domains"); 

} else { 
    echo "Fail"; 
} 

Cette classe dbconn est comme suit:

class dbConn{ 
    var $username = "xxxx_admin"; 
    var $password = "xxxxxxxx"; 
    var $server = "localhost"; 
    var $database = "xxxx"; 
    var $objConn; 

    function __construct(){ 
     $conn = mysql_connect($this->server, $this->username, $this->password, true); 
     if(!$conn){ 
      die("Could not connect: ".mysql_error()); 
     } else { 
      $this->objConn = $conn; 
     } 
     unset($conn); 
    } 
    function __destruct(){ 
     mysql_close($this->objConn); 
     unset($this); 
    } 
    function query($query, $db = false){ 
     mysql_select_db($db != false ? $db : $this->database, $this->objConn); 
     $result = mysql_query($query); 
     unset($query,$db); 
     return $result; 
    } 
} 

Répondre

0

Je ne vois pas quoi que ce soit vraiment bizarre dans votre code. Pourrait-il y avoir un appel "Fail" dans votre méthode login()? De toute façon, je changerais la ligne:

if(mysql_num_rows($objUser) != NULL){ 

à:

$rowCount = mysql_num_rows($objUser); 
if($rowCount and $rowCount > 0){ 

Et, mettre un appel exit(); après votre ligne en-tête().

+0

Cela n'a pas résolu le problème. : { – roydukkey

+0

Il semble que si je commente l'instruction UPDATE, j'obtiens le message "Success". ?? ~! – roydukkey

+0

Est-ce le code exact que vous utilisez? Êtes-vous sûr qu'il n'y a pas d'extra} (accolade) quelque part sur la ligne commentée? –