Php 关闭数据库句柄
我有一个关闭连接的通用函数,它使用dbh,ref当前打开的数据库句柄 我这样称呼它 紧密连接($dbh) 根据这个dbh是sqlsrv dbh还是mysql dbh,我会做以下两件事之一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链接。我不知道它会为其他任何东西返回什么,
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连接”。