0

私は手続き型mysqlメソッドを使用してmysqlデータベースにアクセスすることに慣れています。私は初心者です-中級プログラマーです。

PDO apiを学習しようとしていますが、PDOの使用について説明しているすべてのリソースに、接続文字列、ユーザー名、およびパスワードが表示されています。

例えば

<?php

try {
    $db_conn = new PDO('mysql:host=localhost;dbname=databaseName','username', 'password');  
} 
catch (PDOException $e) {
    echo 'Could not connect to database';
}


$sql = 'SELECT * FROM Products';
$stmt = $db_conn->prepare($sql);

...
...
...

?>

私が欲しいのは、プログラミングの方が良いと思うのは、PDO接続を新しいファイルに入れることです。次に、SQLクエリを実行する場合は、require_once('PDO.php')などを使用します。

これに関して私が抱えている問題は次のとおりです。

  1. 接続を閉じるにはどうすればよいですか?単に$db_conn= null; ??
  2. 各クエリの実行後に接続を閉じてから、接続を再度開く必要がありますか?
  3. 接続を閉じる必要がありますか、それともユーザーがブラウザを閉じると自動的に破棄されますか?

私はPHPマスター:最先端のコードを書くという本から働いています。http://www.sitepoint.com/books/phppro1/これにより、接続を閉じる/使用後にオブジェクトを破棄するという参照が完全に省略されています。

さらに、私はオンラインチュートリアルを見てきましたが、それらはすべて、個別のデータベースコネクタを使用するのではなく、インラインでPDOを使用してデータベースに接続します。これは私が多くの理由で満足していません:

  1. 毎回接続するにはユーザー名とパスワードを入力する必要があります。
  2. 開発者にコードを見てもらい、コードを書いてもらうと、すべての開発者がデータベースにアクセスできるようになります。
  3. DBのユーザー名とパスワードを変更した場合、データベースに接続する各ファイルを更新する必要があります。

誰かがより良いリソースをお勧めできますか?誰かがこれを行うためのベストプラクティスの方法についてアドバイスできますか?

どうもありがとう

4

2 に答える 2

0

クエリの後で接続を閉じるのではなく、次のクエリのために接続を開いたままにしておくだけです。PHPが存在し、ページが表示されると、接続は自動的に閉じられます。

dbのものを別のファイルに入れて、それを含めることをお勧めします。

さらに良いことに、それを使用しているクラスにすべてのdbのものを入れてください。

pdophpページをご覧ください。最良の例ではありませんが、開始する必要があります。

于 2012-09-15T17:11:35.537 に答える
0

データベース名、ユーザー名、およびパスワードを保存する方法についての質問は、PDOの機能とは何の関係もありません。これは実装上の選択です。手続き型関数を操作するために使用する方法は、PDOにも適用できます。違いは、PDOを使用すると、代わりにオブジェクトを操作することです。

したがって、簡単にするために、オブジェクトのPDO作成を関数またはクラスのいずれかに格納します。このオブジェクトでは、いつでもPDOインスタンスを作成できます。

function createPDO($cfg) {
  try {
    return new PDO("mysql:host=".$cfg['host'].",port:".($cfg['port']).";dbname=".($cfg['name']).";",$cfg['username'], $cfg['password']);
  } catch(PDOException $e) {
    // handle exceptions accordingly
  }
}

手続き型関数で使用したのと同じように、これらを含めたいPHPファイルに一元化できます。

関連するすべてのデータベース情報をに入れるかcreatePDO、config($cfg)変数のようなものを使用してこのすべての情報を格納するかの2つの選択肢があります。

$config = array();
$config['db'] = array(
  'host' => 'localhost',
  'name' => 'databse',
  'username' => 'userx',
  'password' => 'passy'
  /* .. etc */
)

createPDO関数の使用は次のようになります

$db_conn = createPDO($config['db']);

接続を閉じる場合、PHPが実行を終了すると、データベースに対して行われた各接続は自動的に切断されます。ただし、必要に応じて、割り当てたPDOオブジェクトの変数を、この例(およびあなたの例)で次のように設定することにより、接続を閉じることができます$db_connnull

$db_conn = null; // connection closed.

PDOにはマニュアルhttp://php.net/manual/en/book.pdo.phpがあります。これは、PDOをもう少しよく理解するための良いスタートです。

于 2012-09-15T17:28:04.993 に答える