ローカルホストとデータベースに正常に接続するデータベース クラスがあります。ユーザー データベース内のすべてのユーザーを選択したいのですが、データベースを呼び出すときに、これは思ったより難しいことがわかりました。
たとえば、次のような多数のエラーが発生します。
Notice: Undefined variable: host in E:\xampp\htdocs\attendance\class.Register.php on line 10
Notice: Undefined variable: dbname in E:\xampp\htdocs\attendance\class.Register.php on line 10
Notice: Undefined variable: user in E:\xampp\htdocs\attendance\class.Register.php on line 10
Notice: Undefined variable: pass in E:\xampp\htdocs\attendance\class.Register.php on line 10
Fatal error: Call to undefined method Database::prepare() in E:\xampp\htdocs\attendance\class.Register.php on line 17
ただし、データベース クラスでこれらを定義し、登録クラスに接続ファイルを要求するように指示しました。私は何を間違っていますか?登録クラスでデータベース接続を呼び出す方法がわかりませんか? 誰にもアイデアはありますか?
class.Connect.php
<?php
// Database connection PDO
class Database {
public function __construct() {
// Connection information
$host = 'localhost';
$dbname = 'imanage';
$user = 'root';
$pass = '';
// Attempt DB connection
try
{
$this->pdo = new PDO("mysql:host=$host;dbname=$dbname", $user, $pass);
$this->pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
//echo 'Successfully connected to the database!';
}
catch(PDOException $e)
{
echo $e->getMessage();
}
}
public function __destruct()
{
// Disconnect from DB
$this->pdo = null;
//echo 'Successfully disconnected from the database!';
}
}
?>
class.Register.php
<?php
require 'class.Connect.php';
class Register {
public function __construct()
{
$this->pdo = new Database($host, $dbname, $user, $pass); //ofcourse you can get the db connections details and database name from a config file
}
public function viewall() {
$sql = "SELECT * FROM users";
$stmt = $this->pdo->prepare($sql);
$stmt->execute();
// here you go:
$users = $stmt->fetchAll();
foreach ($users as $row) {
print $row["firstname"] . "-" . $row["lastname"] ."<br/>";
}
}
}
$run = new Register();
$run->viewall();
?>