如何将类方法转换为静态方法?PDO查询



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

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。

回答您的问题将是

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();

一样称呼

最新更新