2017-01-09 1 views
0

類似のトピックAnswer by "teresko"に関する記事の回答の助けを借りて、私のデータベースへの接続を確立するための工場設計方法を理解できました。匿名関数とクロージャを使用してPDO接続を正しく設定する方法

致命的なエラー:私はこのエラーを受け付けておりますようしかし、私は私のコードでロジックを実装することができませんクラスでCONN "Cで見つかりません:どこか\ \ライン42

上db2.phpはここに私のですdbファイル:

$provider = function() { 
    $db_user="root"; // db user 
    $db_password="";// db password (mention your db password here) 
    $db_database="cl";// database name 
    $db_host="localhost"; // db server 

    $instance = new PDO("mysql:host=$db_host;dbname=$db_database", $db_user, $db_password); 
    $instance->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
    $instance->setAttribute(PDO::ATTR_EMULATE_PREPARES, false); 
    return $instance; 
}; 

$factory = new StructureFactory($provider); 
$conn = $factory->create('conn'); 

class StructureFactory { 
    // protected $provider = null; 
    protected $connection = null; 

    public function __construct(callable $provider) { 
     $this->provider = $provider; 
    } 

    public function create($name) { 
     if ($this->connection == null) { 
      $this->connection = call_user_func($this->provider); 
     } 
     return new $name($this->connection); 
    } 
} 

私は新しいユーザーであるため、この質問を元の回答のコメントとしてリクエストすることはできません。あなたが私が間違っているところで働くのを助けることができますか?元の質問によると、「PHPとPDOを使ってMySQLデータベースに正しく接続し、簡単にアクセスできるようにする方法を本当に知りたいです...私は学びたいです...」

+0

'返す新しい$名(の$ this - >接続);あなたはPDOオブジェクトが持つ'返します$ this-> connection' – cske

+0

Guysは学ぶことを置き換えたい場合は、 '、' $のNAME'がクラスであることを示していますredbeanphpはpdo上に構築されています。 – jewelhuq

+0

ありがとう@cskeそれは私のために働いた.. :) – jkushwaha

答えて

0

新しいユーザーは、単純なPDOのインスタンスにするだけです。

$db_user="root"; // db user 
$db_password="";// db password (mention your db password here) 
$db_database="cl";// database name 
$db_host="localhost"; // db server 
$db_charset="utf8"; 

$conn = new PDO("mysql:host=$db_host;dbname=$db_database;charset=$db_charset", $db_user, $db_password); 
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
$conn->setAttribute(PDO::ATTR_EMULATE_PREPARES, false); 
+0

ありがとう、しかし、私は構成ファイルを設定し、データベースごとに再利用可能な接続を作成して維持しようとしていた。 – jkushwaha

+0

このコードを別のファイルに入れて、それをインクルードするだけです –

関連する問題