私はPDOをテスト目的で初めて使用しています。 しかし、奇妙なエラーが発生し、それを検索して、それは変わったようです。PDOとの接続に関する問題
Warning: PDO::prepare() [pdo.prepare]: SQLSTATE[00000]: No error: PDO constructor was not called in myfile.php on line 39
としてライン39を考える:それは私に次のエラーが表示さ
$db = new db();
$row = $db->prepare('SELECT * FROM test WHERE id = :id')->execute(array('id' => 1));
echo $row['value'];
:
は、ここに私のデータベースのテスト次にクラス
class db extends PDO
{
# Our instance.
private static $db = NULL;
# Calling the connector.
public static function connect()
{
if (self::$db === NULL)
{
$class = __CLASS__;
self::$db = new $class();
}
return self::$db;
}
# Connector.
public function __construct()
{
$dns = 'mysql:dbname='.reg::get('db-name').';host='.reg::get('db-host');
self::$db = new PDO($dns, reg::get('db-username'), reg::get('db-password'));
reg::delete('db-password');
}
# Quick reporting
public function reportError($array)
{
if ($this->db != NULL) { echo 'Myself getting horny'; } // Just for testing, i'm not getting horny because of a mysql database connection!
}
}
次のコードを実行します
$row = $db->prepare('SELECT * FROM test WHERE id = :id')->execute(array('id' => 1));
@andreマトスを、はい、私はやりました。同じ正確なエラーが表示されます。 – Shoe
なぜそこに接続メソッドがありますか? '$ db'が' self :: $ db'ではなくヌルであるかどうかチェックするのはなぜですか?なぜあなたは 'self :: $ db = new db();'をやっているのですか? –
まだ問題はありませんが、テーブル/列名にプレースホルダを使用することはできません。値に評価されるものに対してのみ。 – goat