2016-09-26 12 views
-2

こんにちは、私は同じ種類の問題を抱えていますが、なぜうまくいかないのか混乱しています。致命的なエラー:booleanのメンバー関数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'がnullであるためと思われます。他の人からそれを呼び出すと、ifチェックの値は偽ではありません。おそらく 'if'の結果にその行が必要で、その検査でelseの結果はありません。 – 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はあなたがしようとしたときCall to a member function close() on booleanエラーの原因となっているものであるfalsey(ほとんどの場合はfalse)、である、他のように

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

であるべきそれを近づけて呼び出す。

+0

うまく動作していません。登録が失敗しました。 – funkstar33

+0

これは、yasDB_insert( "username"、 "password"、 "repeatpassword"、 'name'、' email'、 'website ( '$ username'、 '$ password'、 '$ repeat'、 '$ name'、 '$ email'、 '$ website'、 '$ plays' 、 '$ points'、 '$ date') "、false); - 失敗している。 – Carl

+0

ええ、それはレジスタが失敗したと言ったときに得た – funkstar33

関連する問題