我有一个关闭连接的通用函数,它接受一个dbh,这是ref当前打开的数据库句柄。
我这样叫它
闭合连接($dbh)
根据这个dbh是sqlsrv dbh还是mysql dbh的情况,我会做这两件事中的一件;
sqlsrv_close( $dbh);
或
mysql_close($dbh);
除了在函数调用中传递连接类型之外,有没有一种方法可以通过简单地探测由ref传递的$dbh来以编程方式确定这是一个mysql或mssql句柄?
发布于 2012-04-04 05:04:50
尝试使用get_resource_type($dbh);。它将为MySQL DB句柄返回mysql link。我不知道它会为其他任何东西返回什么,因为我手头上只有MySQL。
发布于 2012-04-04 05:07:14
使用应用程序范围的一种方法可能是定义一个接口。
// 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来解决这个问题。
https://stackoverflow.com/questions/10001209
复制相似问题