PHP PDO类在不同的类中使用(不工作)

时间:2017-06-14 14:59:12

标签: php class pdo extends

我想在桌子上获取数据并写一堂课。但是这个课程没有用,因为pdo无法访问。如何使用此类获取表数据?

$db = new PDO("mysql:host=localhost;dbname=xxx;charset=utf8", "xxx", "xxx");


class uye extends PDO{
    var $id;
    var $kadi;

    function cek($id){
        $query = $db->query("SELECT * FROM btc WHERE id='{$id}'", PDO::FETCH_ASSOC);
        if ( $query->rowCount() ) { 
          foreach( $query as $row ){
              $this->id=$row["id"];
              $this->kadi=$row["kadi"];
          }
        }
    }
}


$bilgiler=new uye;
$bilgiler->cek(1);

echo $bilgiler->kadi;

1 个答案:

答案 0 :(得分:0)

所以我正在运行此操作来获取所有数据,因为我不知道你从哪里获得$id

我通常会将代码分解为文件和文件夹,因为我发现这更容易与其他人一起工作。

// database connection file (dbc.php)



class Database
{
    private $host = "127.0.0.1";
    private $db = "";
    private $user = "";
    private $password = "";
    public $conn;



    public function dbConnect()
    {
        $this->conn = null;
        try
        {
            $this->conn = new PDO("mysql:host=" . $this->host . ";dbname=" . $this->db, $this->user, $this->password);
            $this->conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        }
        catch (PDOException $exception)
        {
            echo "Connection error: " . $exception->getMessage();
        }

        return $this->conn;

    }
}

然后我创建一个公共文件,这是您可以存储所有常用函数或静态函数的地方

// Common file (common.php)


require_once('dbc.php');

class DBCommon
{
    private $conn;

    public function __construct()
    {
        $database = new Database();
        $db = $database->dbConnect();
        $this->conn = $db;
    }

    public function run($sql)
    {
        $stmt = $this->conn->prepare($sql);
        return $stmt;
    }


}

因此,为了解释这一点,您会看到run()的函数,这只是为了在每个查询中保存繁琐的$this->conn->prepare。现在您可以运行$this->run()

下一个是你的类文件..这是你的逻辑所在:

// your class file... (class.btc.php)


require_once "common.php";


class BTC extends DBCommon

{
    public function getQuery()
    {
        $stmt = $this->run("SELECT * FROM `btc`");
        $stmt->execute();

        while ($row = $stmt->fetch(PDO::FETCH_OBJ))
        {
            $rows[] = $row;
        }

        return $rows;

    }

}

自我解释..

然后你的调用方法..让我们说index.php

// File you're calling your class from (index.php)


    require_once "class.btc.php";

    $fetch = new BTC();

    $returnData = $fetch->getQuery();


    foreach ($returnData as $data)
    {
        echo
        "<p>$data->something</p>
        <p>$data->somethingElse</p>";
    }

我知道这似乎有点啰嗦,但是你整体节省的时间会有所帮助!