2016-09-26 68 views
-2

您好,我有同樣的問題,但很困惑,爲什麼它不起作用。致命錯誤:調用布爾型成員函數close()

Fatal error: Call to a member function close() on boolean in includes\register_check.php on line 45 

這是$ stmt3-> close();

代碼

 } else { 
    if (strlen($_POST['username2']) < 2 || strlen($_POST['username2']) > 20) { 
     echo "<h3>Username must be between 2 and 20 characters!</h3>"; 
    } else { 
     $stmt = yasDB_select("SELECT `id` FROM `user` WHERE `username` LIKE '$username'"); 
     $stmt2 = yasDB_select("SELECT `id` FROM `user` WHERE `email` LIKE '$email'"); 
     if ($stmt->num_rows == 0 && $stmt2->num_rows == 0) { 
      $stmt3 = yasDB_insert("INSERT INTO `user` (`username`, `password`, `repeatpassword`, `name`, `email`, `website`, `plays`, `points`, `date`) VALUES ('$username','$password','$repeatpassword','$name','$email','$website','$plays','$points', '$date')", false); 
      if ($stmt3) { 
       echo "<h3>Registered! You may now log in.</h3>"; 
      } else { 
       $stmt3->close(); 
       echo "<h3>Registration failed!</h3>"; 
      } 
     } else { 
      $stmt->close(); 
      echo "<h3>Sorry, username or email exists. Please try again.</h3>"; 
     } 
    } 
} 
+2

我懷疑這是因爲'$ stmt3'爲空。你從else調用它,if檢查的值不是falsey。你可能想在'if'結果中找到那一行,而不是那個檢查的結果。 – Carl

+0

Sry我的意思是$ stmt3-> close();這給出了錯誤。 – funkstar33

+0

雖然你正在修復的東西,你可能還想檢查http://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in-php – apokryfos

回答

0
 $stmt3 = yasDB_insert("INSERT INTO `user` (`username`, `password`, `repeatpassword`, `name`, `email`, `website`, `plays`, `points`, `date`) VALUES ('$username','$password','$repeatpassword','$name','$email','$website','$plays','$points', '$date')", false); 
     if ($stmt3) { 
      echo "<h3>Registered! You may now log in.</h3>"; 
     } else { 
      $stmt3->close(); 
      echo "<h3>Registration failed!</h3>"; 
     } 

或許應該

 $stmt3 = yasDB_insert("INSERT INTO `user` (`username`, `password`, `repeatpassword`, `name`, `email`, `website`, `plays`, `points`, `date`) VALUES ('$username','$password','$repeatpassword','$name','$email','$website','$plays','$points', '$date')", false); 
     if ($stmt3) { 
      $stmt3->close(); 
      echo "<h3>Registered! You may now log in.</h3>"; 
     } else { 
      // $stmt3 is falsey (null or false) here, so we cant call close on it. 
      echo "<h3>Registration failed!</h3>"; 
     } 

如別人,$stmt3是falsey(很可能是假的),這是什麼原因造成的Call to a member function close() on boolean錯誤,當您嘗試呼籲關閉它。

+0

不工作已經嘗試過it.Just說註冊失敗 – funkstar33

+0

這意味着您的查詢:yasDB_insert(「INSERT INTO用戶」('用戶名','密碼','repeatpassword','name','email','網站'$ username','$ password','$ repeatpassword','$ name','$ email','$ website','$ plays' ,'$ points','$ date')「,false); - 失敗。 – Carl

+0

是的,我說,當它說註冊失敗 – funkstar33

相關問題