包含文件的php问题

时间:2014-03-03 18:18:54

标签: php oop

我有2个文件。第一个包含(db.php)

$dbhost = 'localhost';
$dbuser = 'root';
$dbpass = '123456';
$db = new PDO("mysql:host=$dbhost;dbname=myclass",$dbuser,$dbpass);

第二个包含(users.php)

<?php
include 'db.php';

class Users {

public function register() {

    $query = $db->prepare('INSERT INTO Users(user, pass) VALUES (?,?)');
    $query->bindValue(1,'user');
    $query->bindValue(2,'pass');
    $query->execute();

}
}

$myUser = new Users();

$myUser->register();

?>

当我尝试加载第二个文件时,数据不会显示。 当我尝试写“$ db-&gt;”时然后似乎没有任何东西可以从下拉列表添加到那里。 你知道为什么会这样,我该如何解决?

3 个答案:

答案 0 :(得分:1)

问题是db.php中的变量无法在您的班级内访问!

通过db.php

更好地初始化班级constructor中的所有值

你必须做这样的事情......

class Users {

    private $dbhost,$dbuser,$dbpass,$db;

    public function __construct(){

        $this->dbhost = 'localhost';
        $this->dbuser = 'root';
        $this->dbpass = '123456';
        $this->db = new PDO("mysql:host=$this->dbhost;dbname=myclass",$this->dbuser,$this->dbpass);

    }

    public function register() {

        $query = $this->db->prepare('INSERT INTO Users(user, pass) VALUES (?,?)');
        $query->bindValue(1,'user');
        $query->bindValue(2,'pass');
        $query->execute();

    }
}

$myUser = new Users();
$myUser->register();

答案 1 :(得分:1)

您需要将$db注入您的班级。您可以使用构造函数:

class Users {

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

    public function register() {
        $query = $this->db->prepare('INSERT INTO Users(user, pass) VALUES (?,?)');
        // etc...
    }
}

include('db.php');
include('users.php');

$myUser = new Users($db);

答案 2 :(得分:0)

尝试将<?php?>放在db.php中。可能代码不会被解释为PHP。