2016-05-15 87 views
-2

$ recruitcheck/$ badgecheck實際上可以正常工作,並且它可以正確返回,並且它提供了已驗證的回顯,但是我認爲我在存儲/綁定/關閉方面做了一些不正確的事情,因爲我在準確計算有用。我錯過了什麼導致:命令不同步;你現在不能運行這個命令?

問題出現在$ emailcheck/$ namecheck中,因爲它不能準確地返回查詢,而且它有點繞過$ register階段,它返回錯誤echo,所以$ emailcheck/$ namecheck總是假/ 0。

我以前工作過,但我試圖實現一些安全功能,因此我添加了準備好的語句,並且在添加這些語句之前我幾乎不知道我在做什麼,所以如果此問題不恰當,信息不夠。如果您發表評論,我將編輯該帖子以使其更具相關性。請給我機會。

$recruitcheck = mysqli_prepare($maindb, "SELECT aurapass, recruitbadge FROM auras WHERE auraname = ?"); 
      mysqli_stmt_bind_param($recruitcheck, "s", $recruitername); 
      mysqli_stmt_execute($recruitcheck); 
      mysqli_stmt_bind_result($recruitcheck, $passcheck, $badgecheck); 
      mysqli_stmt_fetch($recruitcheck); 
      if($passcheck == $recruitpass){ 
       if($badgecheck == "valid"){ 
        mysqli_close($recruitcheck); 
        echo "<script>alert('Recruiter badge verified.')</script>"; 
        $emailcheck = mysqli_prepare($maindb, "SELECT * FROM auras WHERE email = ?"); 
        mysqli_stmt_bind_param($emailcheck, "s", $email); 
        mysqli_stmt_execute($emailcheck); 
        mysqli_stmt_fetch($emailcheck); 
        $namecheck = mysqli_prepare($maindb, "SELECT * FROM auras WHERE auraname = ?"); 
        mysqli_stmt_bind_param($namecheck, "s", $auraname); 
        mysqli_stmt_execute($namecheck); 
        mysqli_stmt_fetch($namecheck); 
        if(mysqli_num_rows($emailcheck)>0 || mysqli_num_rows($namecheck)>0){ 
         die("<script>alert('New auraname/email is already taken.')</script>"); 
        } 
        else{ 
         mysqli_close($emailcheck); 
         mysqli_close($namecheck); 
         if($email == $emailconfirm){ 
          $register = mysqli_prepare($maindb, "INSERT INTO auras (recruitername, recruitmethod, email, birthday, country, gender, auraname) VALUES (?, ?, ?, ?, ?, ?, ?)"); 
          mysqli_stmt_bind_param($register, "sssisss", $recruitername, $recruitmethod, $email, $birthday, $country, $gender, $auraname); 
          mysqli_stmt_execute($register); 
          mysqli_close($register); 
          if(!$register) { 
           echo mysqli_error($maindb); 
           die("<script>alert('Error returned during registration: See bottom of page.')</script>"); 
          } 
          else{ 
          die("<script>alert('New aura registered successfully!')</script>"); 

$ passcheck/$ badgecheck只是綁定變量,他們被稱爲唯一的地方是,你看到他們在這裏。否則:

$recruitpass = cleaninput($_POST["recruitpass"]); 

function cleaninput($info) { 
      $info = trim($info); 
      $info = stripslashes($info); 
      $info = htmlspecialchars($info); 
      return $info;} 

的recruitcheck實際工作,因爲它與不正確與正確輸入改變,但代碼不正確地移動到下一個檢查。

回答

0

你叫mysqli_close()$emailcheck$namecheck查詢你叫他們mysqli_num_rows()之前。

+0

正是我要說的。 @BaileyF我想添加一個101的調試技巧:剪切一些代碼直到它工作,然後逐行放回去。這不是唯一的技術,並不總是最好的,但對於初學者來說可能是非常有用的,有時也可以快速找出問題的根源。 –

+0

我插入了一個fetch,但它仍然不運行$ emailcheck/$ namecheck。 –

+0

@BaileyF:請向我們展示'$ passcheck','$ recruitpass'和'$ badgecheck'的內容。 –

相關問題