2013-03-07 38 views
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('[email protected]', 123, 1); 
?> 

这是我的代码,我不断得到一个错误,我不知道如何弄清楚。我希望你们做到了。传递值到类

这是错误。

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

Catchable fatal error: Object of class RegisterUser could not be converted to string in C:\xampp\htdocs\myPHPWebsite\include\classRegister.php on line 21

更新

<?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('[email protected]', 123, 1); 
?> 

这是错误我得到

Connected to Database! Catchable fatal error: Object of class RegisterUser could not be converted to string in C:\xampp\htdocs\myPHPWebsite\include\classRegister.php on line 22

回答

0

第一个错误是由什么是错在你的MySQL。尝试在查询后添加
if($e = mysql_error()) die("MySQL error: ".$e);

另外,您的可捕捉的致命错误是由$this->roleid错误地写为$this->$roleid造成的。另外请注意,您无法在该行上转义字符串,因此您很容易被注入。这是不够的,只有确保第一次查询时,你有充分的时间去做;)

+0

我更新了问题 – user2139960 2013-03-07 02:15:19

+0

您没有更正我告诉您的任何一件事... – 2013-03-07 02:22:54

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