-1

次のコードを含むスクリプトが別の php スクリプトに含まれているとどうなりますか?毎回新しい PDO オブジェクトを作成しますか..?? はいの場合、複数の php スクリプトで一度作成された単一の PDO オブジェクトを使用するにはどうすればよいですか? 永続的な接続を使用したくない..

try{    
    $dsn        =   'mysql:host=localhost;dbname=test'; 
    $username   =   'user';
    $password   =   'password'; 
    $conn = new PDO($dsn, $username, $password);
    $conn ->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    } catch(PDOException $e) {
    echo 'ERROR: '. $e->getMessage();
}
4

3 に答える 3

1

スクリプト全体でシングルトン データベース オブジェクトを使用することもできますが、そのアプローチにはいくつかの欠点があるため、「依存性注入」を調査することをお勧めします。

繰り返しを避けるために、What is Dependency Injection? をご覧ください。依存性注入の詳細については。

于 2012-12-16T17:14:45.247 に答える
1

スクリプトは新しい PDO オブジェクトを作成し、変数に割り当てます$conn。この部分について、「複数の php スクリプトで一度作成された単一の PDO オブジェクトを使用するにはどうすればよいですか」という答えは$conn、各 HTTP リクエストで何度でも変数を再利用できるということです。リクエスト (Web ページ) ごとに (少なくとも) 1 つの PDO オブジェクトを作成する必要があります。複数の異なる PHP スクリプトでオブジェクトを使用したい場合、それらはすべて 1 つの Web ページの一部であり、すべてのスコープと名前空間で使用できるように変数に入れる$connこと$GLOBALSができます。

于 2012-12-16T17:07:56.210 に答える
0

次のように開始できます。

if (!isset($conn)) {
  /* Create connection, copy your code */
}

ただし、有効かどうかも確認する必要$connがあります。また、 (like )
よりも具体的な変数名を使用するのは悪い考えではありません。$conn$global_pdo_connection$conn

于 2012-12-16T17:02:57.023 に答える