クラスで PDO ステートメントを使用しようとしています。私は oop が初めてで、それがどのように行われるべきかを理解しようとしています。このサイトのいくつかの例を見て、それらのロジックを使用しましたが、どれも機能していないようです。ソース コードに致命的なエラーや警告はありませんでしたが、SQL ステートメントは実行されませんでした。ですから、まだ学んでいない小さなことが 1 つ欠けているだけだと感じています。
これまでに学んだことは、PDO 接続はクラスで作成する必要があり、コンストラクター メソッドを介して呼び出す必要があるということです。データベース クラスのコードは他の人から入手しました。
class Database
{
protected static $Connection;
public static function Connect()
{
if((self::$Connection instanceof PDO) === false)
{
$dbhost = 'host';
$dbname = 'name';
$dbuser = 'user';
$dbpass = 'pass';
self::$Connection = new PDO("mysql:host=$dbhost;dbname=$dbname", $dbuser, $dbpass);
}
return self::$Connection;
}
}
そして、これは単なるコンストラクターであり、クラスの関数の 1 つの PDO ステートメントの例です。
class blahJR extends blah
{
private $Database;
function __construct ($sUser)
{
parent::__construct($sUser);
//Updated below: $this->Database = Database::Connect();
$this->Database = new PDO("mysql:host=$dbhost;dbname=$dbname", $dbuser, $dbpass); //All the variables are given and the connection is definitely being made
} //end __construct
public function foo($sString)
{
try
{
$Statement = $this->Database->prepare("INSERT INTO table (column) VALUES (?)");
$Statement->execute(array($sString));
}
catch (PDOexception $e)
{
DatabaseError($e);
}
}
どんな助けでも大歓迎です。お時間をいただきありがとうございます。
更新:より明確にするために、tryステートメントの周りに関数を追加しました。常にそこにあり、質問をしたときに追加しませんでした。それが明確になることを願っています。まだエラーは報告されていません。なぜこれがうまくいかないのか分かりません。