私はそれが示してクエリを実行しようとするたびに:コール接続::準備()
fatal error: Call to undefined method connect::prepare()
class connect {
private static $instance = null;
private $pdo;
private function __construct() {
try{
$this->pdo = new PDO('mysql:localhost=127.0.0.1;dbname=comment', 'root', '');
} catch(PDOException $e) {
die($e->getMessage());
}
}
public static function getInstance() {
if(!isset(self::$instance)) {
self::$instance = new connect();
}
return self::$instance;
}
}
//この他のページのrequire_once「connect.php」で。 $pdo
は、あなたのクラスconnect
でプライベートなので
class users {
public $pdo;
public function __construct() {
$this->pdo = connect::getInstance();
}
public function insertComment($user_id, $comment_text, $time) {
$sql = "INSERT INTO comments VALUES ('','$user_id', '$comment_text', '$time')";
$this->query = $this->pdo->prepare($sql);
$this->query->execute();
}
}
$user = new users;
$user_id = 10;
$comment_text = 'hello everyone';
$time = date("y/m/d - h:i:s");
$user->insertComment($user_id, $comment_text, $time);
接続時に、$ pdoプロパティにPDOがあります。ユーザーは、$ pdoプロパティーで接続しています。ユーザからPDOにアクセスするには、 '$ this-> pdo-> pdo'を使う必要があります。これはネーミングがあなたのために混乱するところです。 – Devon
それは仕事をdosen'tあなたは全体のアイデアを得るために多くを説明することができます –
私のヒントはあなたのクラス '接続'を取り除くことです。 PDOは既に完全装備のDBクラスです。それをカスタムのもので包む必要はありません! – Jeff