<?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中的字符串
答案 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);
...