将值传递给类php

时间:2013-03-07 02:04:27

标签: php mysql class

    <?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为resource,boolean   在C:\ xampp \ htdocs \ myPHPWebsite \ include \ classRegister.php中给出   第17行

     

捕获致命错误:类RegisterUser的对象不可能   转换为字符串   第21行的C:\ xampp \ htdocs \ myPHPWebsite \ include \ classRegister.php

更新

    <?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);
?>

这是我得到的错误

  

连接数据库!   可捕获的致命错误:无法将类RegisterUser的对象转换为第22行的C:\ xampp \ htdocs \ myPHPWebsite \ include \ classRegister.php中的字符串

2 个答案:

答案 0 :(得分:0)

第一个错误是由MySQL中的错误引起的。尝试加入
查询后if($e = mysql_error()) die("MySQL error: ".$e);

除此之外,您的可捕获致命错误是由$this->roleid错误地写为$this->$roleid引起的。另请注意,您无法在该行上转义字符串,因此您很容易被注入。仅保护第一个查询是不够的,每次都必须这样做;)

答案 1 :(得分: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);
    ...