我正在为论坛创建一个User类,我刚刚开始创建一个注册页面。目前我有一个User类和一个Database Class。所有数据库类都返回对象构造的数据库连接。然后,我在构造中的User类中创建一个DB对象,并将连接存储在类变量中。但是,当我尝试使用prepare()语句时,它被视为未定义。为什么呢?
class User
{
private $id;
private $username;
private $password;
private $joindate;
private $dbconn;
public function __construct(){
$this->dbconn = new DB('127.0.0.1', 'forumdb', 'root', '' );
}
public function setAll($username, $password){
$this->username = $username;
$this->password = $password;
//$this->joindate = now();
}
public function userToDB(){
try {
# sql
$sql = "INSERT INTO users (username, password)
VALUES (?, ?)";
# prepare
$stmt = $this->dbconn->prepare($sql);
# the data we want to insert
$data = array($this->username, password_hash($this->password));
# execute width array-parameter
$stmt->execute($data);
echo "New records created successfully";
}
catch(PDOException $e)
{
echo $sql . "<br>" . $e->getMessage();
}
}
}
class DB
{
public function __construct($host, $dbname, $dbuser, $dbpass){
try {
$db = new PDO("mysql:host=$host;dbname=$dbname;", $dbuser,
$dbpass, array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES 'UTF8'"));
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
return $db;
/*** echo a message saying we have connected ***/
echo 'Connected to database.<br />';
}
catch(PDOException $e){
// For debug purpose, shows all connection details
echo 'Connection failed: '.$e->getMessage()."<br />";
// Hide connection details.
//echo 'Could not connect to database.<br />');
}
}
}
当我在我的注册页面的User类中调用userToDB方法时,会出现问题。