PHP - PDO' config'文件等价

时间:2011-03-15 16:16:49

标签: php pdo

这可能是之前已经回答过的问题 - 如果是这样,请在下面发表评论,我会将其删除。

我一直在学习PHP课程,同时跳转到PDO。

我似乎无法找到的一个概念是如何用类来完成与此相当的:

的config.php

<?php

$host = 'localhost';
$user = 'user';
$pass = 'pass';

$con = mysql_connect($host, $user, $pass) or die("MySQL Error");
mysql_select_db("account_db", $con);

?>

another.php

<?php

require_once('config.php');

$selectStatement = "SELET foo FROM bar";
$selectQuery = mysql_query($selectStatement, $con);

?>

我还没弄清楚如何为PDO连接创建配置文件/类,然后在另一个类中使用它,即如下所示的用户:

<?php

class Users
{
    private $_userId;

    function setUserId($username)
    {
        // Use a predefined database handle to connect to a database to get the users ID - I assume using a preconfigured $dbh handle via an include or extend?
        $sth = $dbh->prepare("SELECT id FROM users WHERE username = :username");
        $sth->bindParam(':username', $username);
        ...
    }
}

?>

全部谢谢:)

1 个答案:

答案 0 :(得分:7)

在我的项目中,我更喜欢使用一个带有静态成员的类来保存PDO对象。

<?php
class DB
{
   private static $instance = null;
   public static function get()
   {
       if(self::$instance == null)
       {
           try
           {
               self::$instance = new PDO('mysql:host=localhost;dbname=name', 'user', 'abc123');
           } 
           catch(PDOException $e)
           {
               // Handle this properly
               throw $e;
           }
       }
       return self::$instance;
   }
}

我可以像这样访问它:

<?php
require 'DB.php';
class Users
{
    private $_userId;

    function setUserId($username)
    {
        // Using DB::get() to get the PDO object
        $sth = DB::get()->prepare("SELECT id FROM users WHERE username = :username");
        $sth->bindParam(':username', $username);
        ...
    }
}