0
    <?php
class RegisterUser{
  var $email;
  var $password;
  var $password_hash;
  var $roleid;
  public function __construct($email, $password, $roleid){
    $this->email = $email;
    $this->password = $password;
    $this->roleid = $roleid;
    $this->addUsertoDB();
  }

  public function addUsertoDB(){
    $this->password_hash = md5($this->password);
    $checkemail = mysql_query("SELECT * FROM users WHERE (email ='" . mysql_real_escape_string($this->email) . "')");
    if(mysql_num_rows($checkemail) == 1){
      echo '<script type="text/javascript"> alert ("Email already used!");</script>';
    }
    else{
      $register = "INSERT INTO users(email, password, roleid) VALUES('$this->email', '$this->password_hash', '$this->$roleid')";
      if($query_run = mysql_query($register)){
        echo('<scrip type="text/javascript"> alert("Registration complete!"); location.replace("login")</script>');
      }
      else{
        die('<script type="text/javascript"> alert("Error inserting data!");</script>');
      }
    }
  }
}

$connect = new RegisterUser('carloadap@htomail.com', 123, 1);
?>

これは私のコードです。エラーが発生し続けます。解決方法がわかりません。皆さんがそうしてくれたことを願っています。

これがエラーです。

警告: mysql_num_rows() は、パラメーター 1 がリソースであると想定します。17 行目の C:\xampp\htdocs\myPHPWebsite\include\classRegister.php で指定されたブール値です。

キャッチ可能な致命的なエラー: C:\xampp\htdocs\myPHPWebsite\include\classRegister.php の 21 行目でクラス RegisterUser のオブジェクトを文字列に変換できませんでした

更新しました

    <?php
require 'connectDB.php';
class RegisterUser{
  var $email;
  var $password;
  var $password_hash;
  var $roleid;
  public function __construct($email, $password, $roleid){
    $this->email = $email;
    $this->password = $password;
    $this->roleid = $roleid;
    $this->addUsertoDB();
  }

  public function addUsertoDB(){
    $this->password_hash = md5($this->password);
    $checkemail = mysql_query("SELECT * FROM users WHERE (email ='" . mysql_real_escape_string($this->email) . "')");
    if(mysql_num_rows($checkemail) == 1){
      echo '<script type="text/javascript"> alert ("Email already used!");</script>';
    }
    else{
      $register = "INSERT INTO users(email, password, roleid) VALUES('$this->email', '$this->password_hash', '$this->$roleid')";
      if($query_run = mysql_query($register)){
        echo('<scrip type="text/javascript"> alert("Registration complete!"); location.replace("login")</script>');
      }
      else{
        die('<script type="text/javascript"> alert("Error inserting data!");</script>');
      }
    }
  }
}

$connect = new RegisterUser('carloadap@htomail.com', 123, 1);
?>

これは私が得るエラーです

データベースに接続しました! キャッチ可能な致命的なエラー: C:\xampp\htdocs\myPHPWebsite\include\classRegister.php の 22 行目でクラス RegisterUser のオブジェクトを文字列に変換できませんでした

4

2 に答える 2

0

あなたが私たちに与えたエラーを形成する

Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in
C:\xampp\htdocs\myPHPWebsite\include\classRegister.php on line 17

$checkmail値が有効なmysql_num_rows()結果ではないようです。クエリを確認し、データベース コンソール (phpmyadmin を使用している場合) で実行してみてください。

public function addUsertoDB(){
    ...
    $query = "SELECT * FROM users WHERE (email ='" . mysql_real_escape_string($this->email) . "')";
    checkemail = mysql_query($query) or die(mysql_errno() . " : " . mysql_error() . " : " . $query);
    ...
于 2013-03-07T02:29:56.587 に答える
0

最初のエラーは、MySQL に問題があるために発生します。
if($e = mysql_error()) die("MySQL error: ".$e);クエリの後に追加してみてください。

それはさておき、キャッチ可能な致命的なエラーは、誤っ$this->roleidて記述されていることが原因$this->$roleidです。また、その行の文字列をエスケープしていないため、インジェクションに対して脆弱であることに注意してください。最初のクエリを保護するだけでは不十分です。毎回それを行う必要があります;)

于 2013-03-07T02:08:04.620 に答える