0

接続を閉じる汎用関数があり、ref によって現在開いているデータベース ハンドルである dbh を取ります。

私はこう呼んでいます

接続を閉じる($dbh)

この dbh が sqlsrv dbh であるか mysql dbh であるかに応じて、2 つのいずれかを行います。

sqlsrv_close( $dbh);

また

mysql_close($dbh);

関数呼び出しで接続タイプを渡す以外に、ref によって渡された $dbh をプローブするだけで、これが mysql または mssql ハンドルであるかどうかをプログラムで確認する方法はありますか?

4

2 に答える 2

2

アプリケーション全体で使用する方法は、インターフェイスを定義することです。

// connection interface
interface db
{
  public function close($conn);
}

使用されるドライバーの実装を提供します。

// mysql
class mysql implements db
{
  public function close($conn) { 
    mysql_close($conn);
  }
}
// mssql
class mssql implements db {
  public function close($conn) {
    sqlsrv_close($conn);
  }
}

アプリケーション全体の変数を使用して、適切なドライバーをインスタンス化します。

if($driver == "mysql") {
  $db = new mysql();
} elseif($driver == "mssql") {
  $db = new mssql();
}
...
$db::close($conn);

これは、それを処理する最も一般的な方法のようなものです。

また、誰もが推奨するように、これに取り組むには start using PDOを使用する必要があります。

于 2012-04-03T21:07:14.477 に答える
1

を使ってみてくださいget_resource_type($dbh);mysql linkMySQL DB ハンドルを返します。手元にあるのは MySQL だけなので、他に何を返すかはわかりません。

于 2012-04-03T21:04:50.370 に答える