私はPHPで新しく、最近エラーが発生しています。以下の私のコードを見てください。要約PDOリポジトリファイルエラー
オブジェクトコンテキストでない場合は$ thisを使用しています。
この
は私がこのsetting.php私はそのクラスのPDORepositoryにアクセスするために何をすべき<?php
abstract class PDORepository{
const USERNAME="xxxx";
const PASSWORD="";
const HOST="xxxxxx";
const DB="xxxxx";
private function getConnection(){
$username = self::USERNAME;
$password = self::PASSWORD;
$host = self::HOST;
$db = self::DB;
$connection = new PDO("mysql:dbname=$db;host=$host", $username, $password);
return $connection;
}
protected function queryList($sql, $args){
$connection = $this->getConnection();
$stmt = $connection->prepare($sql);
$stmt->execute($args);
return $stmt;
}
}
?>
に名前を付けるのindex.php
<?php
require_once ('setting.php');
try{
$sql = "CREATE TABLE users (
user_id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
account VARCHAR(30) NOT NULL,
password VARCHAR(30) NOT NULL,
)";
$result = $this->db->getConnection()->execute($sql);
}catch(Exception $e){
echo " " . $e->message();
}
?>
です。私は抽象クラスを使うことについて話しているところがあります。しかしこれはこれに似ていません。ご協力ありがとうございました!初心者ここ!
私はこのクラスが抽象である理由を実際には知りません。さらに、[あなたの最初のデータベースラッパーの子供の病気](https://phpdelusions.net/pdo/common_mistakes) –
^。他のノート '$ this'はあなたが現在使っているオブジェクトを指します。index.phpではあなたはオブジェクトコンテキストにいないので、$ thisは定義されていません。抽象クラスは、クラス内で期待される機能を完成させるために拡張する必要がある基本クラスを作成する方法として使用されます。あなたのクラスは通常の(または最終的な)クラスでなければなりません。 '$ db = new PDORepository;'でインスタンス化する必要があります。次に、getConnectionメソッドがprivate(オブジェクト内でのみアクセス可能)であるといういくつかの問題が発生します。私は簡単に始めて、コードを頻繁にテストすることをお勧めします。 – JimL
全体として、このコードは単なる演算子の山であり、ランダムに一緒に叩かれています。しばらくの間、バニラPDOで練習することをお勧めします。それはあなたに頭痛の多くを保存します。レコードのためだけに:$ thisの問題はこちらの唯一の問題ではありません –