我有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;”时然后似乎没有任何东西可以从下拉列表添加到那里。 你知道为什么会这样,我该如何解决?
答案 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。