Php 对Select查询使用PDO对象

Php 对Select查询使用PDO对象,php,mysql,pdo,Php,Mysql,Pdo,我是PDO的初学者。我正在学习PDO教程。我想使用一个简单的select语句来获取用户的id 但是当我运行index.php时,它不会显示任何echo!我的错在哪里 我有四个文件: 配置=>设置用户名和密码 DB_连接: class DB_Connect { // constructor function __construct() { } // destructor function __destruct() { // $this-

我是PDO的初学者。我正在学习PDO教程。我想使用一个简单的select语句来获取用户的id

但是当我运行
index.php
时,它不会显示任何
echo
!我的错在哪里

我有四个文件:

配置=>设置用户名和密码

DB_连接:

class DB_Connect {

    // constructor
    function __construct() {

    }

    // destructor
    function __destruct() {
        // $this->close();
    }

    // Connecting to database
    public function connect() {
        require_once 'include/config.php';
        try {
            $hostname = DB_HOST ;
            $dbname   = DB_DATABASE;
            $dbh = new PDO("mysql:host=$hostname;dbname=$dbname", DB_USER, DB_PASSWORD);
        }
        catch(PDOException $e)
        {
            echo $e->getMessage();
        }

        return $dbh;
    }



}

DB_功能:

class DB_Functions {

    private $db;

    //put your code here
    // constructor
    function __construct() {
        require_once 'DB_Connect.php';
        // connecting to database
        $this->db = new DB_Connect();
        $this->db->connect();
    }

    // destructor
    function __destruct() {

    }


    function getUsers(){

        $sql = "SELECT * FROM users";
        foreach ($this->$db->query($sql) as $row)
        {
            echo $row->id;
        }

        /*** close the database connection ***/
      //  $db = null;

    }
}

index.php

<?php

    require_once 'include/DB_Functions.php';
    $qr = new DB_Functions();
    $qr->getUsers();



?>

db\u连接

class DB_Connect {
    public $dbh;
    // constructor
    function __construct() {

    }

    // destructor
    function __destruct() {
        // $this->close();
    }

    // Connecting to database
    public function connect() {
        require_once 'include/config.php';
        try {
            $hostname = DB_HOST ;
            $dbname   = DB_DATABASE;
            $this->dbh = new PDO("mysql:host=$hostname;dbname=$dbname", DB_USER, DB_PASSWORD);
        }
        catch(PDOException $e)
        {
            echo $e->getMessage();
        }
    }
}
db_函数

class DB_Functions {

    private $db;

    //put your code here
    // constructor
    function __construct() {
        require_once 'DB_Connect.php';
        // connecting to database
        $this->db = new DB_Connect();
        $this->db->connect();
    }

    // destructor
    function __destruct() {

    }


    function getUsers(){

        $sql = "SELECT * FROM users";
        foreach ($this->db->dbh->query($sql) as $row)
        {
            echo $row->id;
        }

        /*** close the database connection ***/
      //  $db = null;

    }
}

您没有数据库连接,因为您现在正在将PDO连接分配给一个变量。因此,脚本的其余部分无法访问您的连接。至少,这是我目前的想法。

$this->$db->query($sql)到
$this->db->query($sql)
我把它改成了db,但我还没有任何输出。你的数据库有连接吗?您是将结果提取为对象还是数组?尝试
var\u Dump($row)
尝试添加
错误报告(E\u ALL);ini_集('display_errors','1')上,查看您得到的错误,因此很明显,到DB的连接没有建立。调试该连接部分,查看是否正确设置了uname、pass、host、dbname等所有值。什么是查询函数?我必须实现查询函数?查询函数是PDO类的一部分。您无法访问PDO类,因为当您使用PDO连接到数据库时,您创建了一个局部变量,该变量只能在该函数中访问,不能在类的其余部分中访问。因此,您需要像这样使您的连接对类的其他成员可用:
$this->dbh