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'];

私はそれを理解することができず、それが私を夢中にさせています...何かアイデアはありますか?ありがとう、Guu。

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 に答える