2016-05-05 43 views
0

即使这些值应该相等,它也不计算,并且它直接到else事件。表列名称与数据库匹配,所以...正确的方法来检查局部变量是否等于局部变量

我需要某种类型的引号($ recruitcheck == $ recruitpass)吗?

$recruiter = $_POST["recruiter"]; 
$recruitpass = $_POST["recruitpass"]; 
$recruitcheck = mysqli_query($maindb, "select aurapass from auras where auraname='$recruiter'"); 
if($recruitcheck == $recruitpass) { 
    $badgecheck = mysqli_query($maindb, "select recruitbadge from auras where auraname='$recruiter'"); 
    if($badgecheck == "0") { 
     echo "<script>alert('Recruiter information correct, but there is no recruit badge.')</script>"; 
     exit(); 
    } else { 
     echo "<script>alert('Recruiter badge accepted.')</script>"; 
     $emailcheck = mysqli_query($maindb, "select * from auras where email='$email'"); 
     $namecheck = mysqli_query($maindb, "select * from auras where auraname='$auraname'"); 
     if(mysqli_num_rows($emailcheck) > 0 || mysqli_num_rows($namecheck) > 0){ 
      echo "<script>alert('New auraname/email is already taken.')</script>"; 
      exit(); 
     } else { 
      exit();       
     } 
    } 
} else { 
    echo "<script>alert('Aura information of recruiter is incorrect. Please, use preexisting aura information to confirm recruiter identity.')</script>"; 
    exit(); 
} 
+3

'$ recruitpass'是一个字符串,'$ recruitcheck'是__not__字符串。 –

+2

通过用'var_dump'打印出来来检查变量。 'mysqli_query'返回一个资源,所以它永远不会等于一个字符串值。 http://php.net/manual/en/mysqli-result.fetch-row.php – dan08

+0

获取行以从数据库获取数据。 –

回答

0

$ recruitpass是一个字符串,而$ recruitcheck是mysqli_result对象。您需要在之前获取字符串值对象,然后将其与$ recruitpass进行比较

+0

经过一番激烈的挖掘之后,我发现mysqli_fetch_assoc工作到将mysqli_query结果存储为字符串。由于它是以关联方式存储的,因此可以通过$ variable ['columnname']调用这些字符串。为了比较,请检查$ variable ['columnname'] == $ stringvariable。在我的情况下,$ recruitfetch = mysqli_fetch_assoc($ recruitcheck);如果($ recruitfetch ['aurapass'] == $ recruitpass {code works}。谢谢大家! –