私は自分の問題を解決するためにかなりの量の調査、トラブルシューティング、検索を行ってきましたが、運がありませんでした。だからここにエラーがあります...
非オブジェクトのメンバー関数prepare()の呼び出し
このエラーを生成するコードは、次のように私のユーザーAuthクラスにあります...
$this->dbManager->db->prepare('INSERT INTO users (email, password, user_salt, is_admin) VALUES (:email, :password, :user_salt, :is_admin)');
dbManagerは、次のようにクラスの__constructに渡した$dbから取得されます...
public function __construct($db) {
$this->siteKey = 'notImportant';
$this->dbManager = $db;
}
$ dbは、index.phpが必要とする1つの「ブートストラップ」phpファイルで必要な私のsqlクラスに由来します。
bootstrap.phpコードは次のとおりです...
<?php
// Load firePHP library
//require_once('FirePHPCore/FirePHP.class.php');
ob_start();
//$firephp = FirePHP::getInstance(true);
// Load all the classes/libs...
require_once 'classes/sql.class.php';
require_once 'classes/auth.class.php';
$db = sql::getInstance();
session_start();
$auth = new Auth($db);
require_once 'lib/handlepost.php';
そして最後に、sql.class.phpの私のコードは次のとおりです...
class sql {
public static $db = false;
private $database_host = '';
private $database_user = '';
private $database_pass = '';
private $database_db = '';
private function __construct() {
if (self::$db === false) {
$this -> connect();
}
return self::$db;
}
public static function getInstance() {
if (!self::$db) {
self::$db = new sql();
}
return self::$db;
}
private function connect() {
$dsn = $this -> database_type . ":dbname=" . $this -> database_db . ";host=" . $this -> database_host;
try {
self::$db = new PDO($dsn, $this -> database_user, $this -> database_pass, array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES \'UTF8\''));
self::$db -> setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
//print_r($e->errorInfo);
//echo 'Connection failed: ' . $e->getMessage();
}
} // End Connect
}
私はPDOを使用するのが初めてで、そもそも混乱を引き起こしています...
私が間違っていることの説明でこれを機能させるための助けは非常にありがたいです。