2010-09-15 35 views
2
PDO

所以我發現看上去還不錯,以我的方法:http://www.php.net/manual/en/class.pdo.php#97682方法在PHP中使用

需要PHP 5.3,但我的主機只支持5.2 :(

所以我應該用什麼方法PDO ,在需要時只連接到數據庫? 並重新使用相同的連接?

+0

也許你也應該更改標題? PDO在php 5.2中完全可用;) – 2010-09-15 11:29:01

+0

您是否使用特定的編程方法MVC? – 2010-09-15 11:53:12

回答

1

使用程序單身人士可讀性:

function db() { 
     static $conn; 
     if (!isset($conn)) { 
      $conn = new PDO("sqlite:/tmp/db"); 
     } 
     return $conn; 
} 

這簡化了應用,用於例如:

$rows = db()->query("SELECT * FROM all")->fetchAll(); 
+0

有趣的是,使$ conn靜態允許它用於db()的所有調用? – Johnny 2010-09-15 11:46:22

+0

靜態就在那裏,所以函數不會「忘記」set變量。所以$ conn實際上只是一次實例化,並且對於db()的所有連續調用都保持活動狀態。 – mario 2010-09-15 12:28:15

1

可以使用單用實例。數據庫::的getInstance()它創建,緩存和返回PDO對象

+0

我該怎麼做?我是新來的單身人士。 – Johnny 2010-09-15 11:27:02

+0

看看馬里奧的迴應,其相當簡單。使用類的單身人士非常相似,你只需要多一點打字 – 2010-09-15 11:51:23

+0

你能給我舉個例子嗎? – Johnny 2010-09-15 12:01:04

0
class db{ 

    protected static $conn; 
    public static function getInstance() { 

     if (!isset(self::$conn)) { 
      self::$conn = new PDO("sqlite:/tmp/db"); 
     } 

     return self::$conn; 
    } 
} 

$rows = db::getInstance()->query("SELECT * FROM all")->fetchAll(); 
+0

謝謝,我想程序看起來更好。 – Johnny 2010-09-15 12:14:58