Fatal error: Call to undefined method users::prepare() in C:\xampp\htdocs\hrm2\header.php on line 21
DBCONFIG:
<?php
class database{
function __construct()
{
$db_user="root";
$db_pass="";
try {
$con = new PDO('mysql:host=localhost;dbname=hrm', $db_user, $db_pass);
$con->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
return $con;
}
catch(PDOException $e)
{
echo $e->getMessage();
}
}
}
class.user.php
<?php
session_start();
class users
{
protected $db;
function __construct(){
require_once $_SERVER['DOCUMENT_ROOT']."/hrm2/dbconfig.php";
$this->db= new database();
}
function select($userid){
try{
$stmt=$this->db->prepare("SELECT * from users where
uesrid=:userid");
$stmt->execute(array(':userid'=>$userid));
} catch(PDOException $e){
$e->getMessage();
}
}
header.phpのを、エラーが発生しています:
<!doctype html>
<?php
include('Class/class.user.php');
$user= new users();
// check if user is logged in
if($user -> logado()==""){
$user->redirect('login.php');
}
$userid=$_SESSION["sessao"];
$userRow=$user->select($userid);
?>
header.phpファイルに用意されている準備がうまくいかない理由は分かりませんが、PHP OOPで新しくなっているので、少し間違えることがあります私から作られた
あなたの 'users'クラスには' prepare'メソッドがありません。 '$ user-> prepare()'は何をすると思いますか?コンストラクタの戻り値は無視され、作成するクラスのオブジェクトが常に返されます。 '$ db'を返すメソッドを定義する必要があります。 – Barmar
コードを更新しました@Barmar – sygamers
なぜあなたは別のクラスの中でクラスを宣言していますか?ファイルを最上部に含めてから、ユーザークラスの内部でDBクラスをインスタンス化してください。 – aynber