2010-04-21 37 views
0

我对邀请系统有问题。 if语句似乎打破了。它显示消息“失败”,但UPDATE语句仍然执行。为什么THEN和ELSE都会执行?如果在比较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"; 
} 

这dbConn类如下:

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; 
    } 
} 

回答

0

我看不到任何东西在你的代码很奇怪。在你的login()方法中可能会有“失败”调用吗?无论哪种方式,我会改变该行:

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

到:

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

而且,把一个exit();调用你的头()行之后。

+0

这并没有解决问题。 :{ – roydukkey 2010-04-21 04:05:28

+0

看来,如果我评论我们的UPDATE语句,我会得到“成功”消息。 ??〜! – roydukkey 2010-04-21 04:16:31

+0

这是你正在运行的确切代码吗?你确定在注释行上没有多余的(大括号)吗? – 2010-04-21 14:14:41