我有一個關閉連接的通用函數,它需要一個dbh,當前打開的數據庫句柄通過ref。關閉數據庫句柄
我這樣稱呼它
closeconnection($胸徑)
根據該胸徑是否是SQLSRV胸徑或胸徑的MySQL的情況下,我做的兩件事情之一;
sqlsrv_close($dbh);
或
mysql_close($dbh);
短傳的連接類型的函數調用的,是有辦法找出這是否是一個MySQL或MSSQL通過簡單地探測編程方式處理$ dbh是由ref傳遞的?
我有一個關閉連接的通用函數,它需要一個dbh,當前打開的數據庫句柄通過ref。關閉數據庫句柄
我這樣稱呼它
closeconnection($胸徑)
根據該胸徑是否是SQLSRV胸徑或胸徑的MySQL的情況下,我做的兩件事情之一;
sqlsrv_close($dbh);
或
mysql_close($dbh);
短傳的連接類型的函數調用的,是有辦法找出這是否是一個MySQL或MSSQL通過簡單地探測編程方式處理$ dbh是由ref傳遞的?
嘗試使用get_resource_type($dbh);
。它將爲MySQL DB句柄返回mysql link
。我不知道它會爲其他任何事情返回什麼,因爲MySQL是我所能掌握的。
感謝Crontab,它返回「SQL Server連接」。 – 2012-04-03 23:49:26
使用應用程序範圍的方法可能是定義一個接口。
// 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);
這就像處理它的最常見的方式。
同樣任何人都會推薦你,你應該使用開始使用PDO來解決這個問題。
謝謝亞歷山大,但問題的全部重點是如何獲得$驅動程序爲MySQL或不... crontab處理它。感謝您的時間。我是PHP新手。您可以推薦關於何時何地不使用界面和學習的良好資源? – 2012-04-03 22:15:59
你已經知道'$ driver'是什麼了,你只是選擇忘記它;)。簡單閱讀關於OOP的知識,瞭解界面和相關知識。 – Alexander 2012-04-03 22:17:34
簡而言之是將它放在應用程序範圍內。 – Alexander 2012-04-03 20:57:44
爲什麼不使用PDO?有兩個用於PDO的mysql和sqlsrv驅動程序,對於這兩種數據庫類型使用PDO將爲您提供到DBMS的統一接口,您可以通過簡單地取消設置實例來關閉連接。 – GordonM 2012-04-03 21:38:25