1

我有一个带有构造函数的简单查询方法:

class mysql_a {

public $db;

public function __construct($db) {
    $this->db=$db;
    }

public function find_by_id() {
   $result =  $this->db->query('SELECT * FROM users WHERE id=2 LIMIT 1')->fetch(PDO::FETCH_ASSOC);
   return $result;
   }

}

$found = new mysql_a($db);
$res = $found->find_by_id();
echo $res['username'];

如何使函数“find_by_id”静态?我的意思是这样的:

public static function find_by_id() {
   $result = self::$db->query('SELECT * FROM users WHERE id=2 LIMIT 1')->fetch(PDO::FETCH_ASSOC);
   return $result;
}

以及如何执行它?我的意思是如何改变这部分:

$found = new mysql_a($db);
$res = $found->find_by_id();
echo $res['username'];

我想不通,它让我发疯......有什么想法吗?谢谢,顾。

4

1 回答 1

1

你的问题的答案是

public static function db() {
    static $conn;
    if (!isset($conn)) {
        try {
            $conn = new PDO("mysql:host=" . DB_HOST . ";dbname=" . DB_NAME, DB_USERNAME, DB_PASSWORD, array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"));
        }
        catch(PDOException $ex){
            die '<pre>'.print_r($ex->getMessage(), true).'</pre>';
        }
    }
    return $conn;
}

public static function find_by_id() {
   $result = self::$db->query('SELECT * FROM users WHERE id=2 LIMIT 1')->fetch(PDO::FETCH_ASSOC);
   return $result;
}

您必须删除您的构造函数并在静态函数 db 中创建 PDO 对象。

你会打电话给$found = mysql_a::find_by_id();

于 2012-10-19T09:00:52.213 回答