2010-09-15 57 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