Php 关闭数据库句柄

Php 关闭数据库句柄,php,mysql,sql-server,Php,Mysql,Sql Server,我有一个关闭连接的通用函数,它使用dbh,ref当前打开的数据库句柄 我这样称呼它 紧密连接($dbh) 根据这个dbh是sqlsrv dbh还是mysql dbh,我会做以下两件事之一 sqlsrv\u close($dbh) 或 mysql\u close($dbh) 除了在函数调用中传递连接类型外,是否有一种方法可以通过简单地探测ref传递的$dbh,以编程方式确定这是mysql还是mssql句柄?尝试使用。它将返回mysql数据库句柄的mysql链接。我不知道它会为其他任何东西返回什么,

我有一个关闭连接的通用函数,它使用dbh,ref当前打开的数据库句柄

我这样称呼它

紧密连接($dbh)

根据这个dbh是sqlsrv dbh还是mysql dbh,我会做以下两件事之一

sqlsrv\u close($dbh)

mysql\u close($dbh)


除了在函数调用中传递连接类型外,是否有一种方法可以通过简单地探测ref传递的$dbh,以编程方式确定这是mysql还是mssql句柄?

尝试使用。它将返回mysql数据库句柄的
mysql链接
。我不知道它会为其他任何东西返回什么,因为MySQL是我手边的全部。

尝试使用。它将返回mysql数据库句柄的
mysql链接
。我不知道它会为其他任何东西返回什么,因为MySQL是我手边的全部。

使用应用程序范围的一种方法可能是定义一个接口

// 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-use来解决这个问题。

使用应用程序范围的方法可以是定义一个接口

// 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-use来解决这个问题。

Short将其放在应用程序范围内。为什么不使用PDO呢?PDO有mysql和sqlsrv两种驱动程序,对这两种DB类型使用PDO将为您提供一个到DBMS的统一接口,您只需取消设置实例即可关闭连接。Short将其放在应用程序范围内。为什么不使用PDO?PDO有mysql和sqlsrv驱动程序,对这两种DB类型使用PDO将为您提供一个到DBMS的统一接口,您可以通过简单地取消实例来关闭连接。谢谢您,Alexander,但问题的关键是如何使$driver成为mysql或不是mysql。。。克朗塔布解决了这个问题。谢谢你抽出时间。我是PHP新手。关于界面以及何时何地不使用界面,您可以推荐哪些好的资源?您已经知道什么是
$driver
,您只是选择忘记它;)。只需阅读OOP,就可以了解接口和相关内容。谢谢你,Alexander,但问题的关键是如何让$driver成为mysql或不是mysql。。。克朗塔布解决了这个问题。谢谢你抽出时间。我是PHP新手。关于界面以及何时何地不使用界面,您可以推荐哪些好的资源?您已经知道什么是
$driver
,您只是选择忘记它;)。只需阅读OOP,就可以了解接口和相关信息。感谢Crontab,它返回“SQL Server连接”。感谢Crontab,它返回“SQL Server连接”。