さて、私はこのクラスを持っています(ヘッダーと最初の関数のみを含めます)。
require_once("./inc/db.inc.php");
class Users
{
/**
* Properties
**/
private $insert;
protected $user;
protected $email;
protected $get;
protected $check;
protected $generate;
protected $drop;
/**
* PUBLIC function Register
*
* Registers the user to the system, checking for errors.
* If error was found, it will throw new exception.
*
* @parm username The username the user posted.
* @parm password The password the user posted.
* @parm repassword The validated password the user posted.
* @parm email The email the user posted.
* @parm reemail The validated email the user posted.
* @parm day The day the user posted (for date of birth).
* @parm month The month the user posted (for date of birth).
* @parm year The year the user posted (for date of birth).
*
* @return Return true means everything is correct, register successfully.
**/
public function register($username, $password, $repassword, $email, $reemail, $day, $month, $year)
{
global $pdo;
// Check if passwords matching.
if ($password != $repassword)
{
throw new exception ("Passwords does not match.");
}
// Check if emails matching.
else if ($email != $reemail)
{
throw new exception ("Emails does not match.");
}
// The main insert query
$this->insert = $pdo->prepare
("
INSERT INTO users
(user_name, user_password, user_email, user_birth)
VALUES
(:username, :password, :email, :birth)
");
... and so on... ^ error is there
何らかの理由で、このエラーが発生しています
Fatal error: Call to a member function prepare() on a non-object in C:\xampp\htdocs\drip\class\users.class.php on line 68
以前はうまく機能していましたが、自動ロードクラスを使用するように変換した後、これを開始しました。
登録ページ:
include ("inc/config.inc.php");
$users = new Users;
そして、それが関数を使用して登録する方法です(ここでエラーが発生します):
try
{
$users->register($_POST['user'], $_POST['pass'], $_POST['repass'], $_POST['email'], $_POST['reemail'], $_POST['day'], $_POST['month'], $_POST['year']);
echo 'Successfully Registered!';
}
catch (Exception $e)
{
echo $e->getMessage();
}
本当に何も思いつきません。
オブジェクトであるvar $pdoとのDB接続を持つdb.inc.phpを含めていますが、PHPはそうではないと言います...
$pdo = new PDO('mysql:host='.MYSQL_HOST.';dbname=driptone', MYSQL_USER, MYSQL_PASSWORD);
try
{
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}
/**
* Connection failed, we will print an error.
* @var e holds the error message.
**/
catch(PDOException $e)
{
echo $e->getMessage();
}
私は何を間違えましたか?なぜそれをするのですか?どうもありがとう。
そして、それが私が自動ロードする方法です:
function classAutoLoad($class) {
if (file_exists("class/$class.class.php"))
include("class/".$class.".class.php");
}
spl_autoload_register('classAutoload');