So heres my code:
<?php
include_once $_SERVER['DOCUMENT_ROOT'] . "/includes/class_database.php";
?>
<?php
class User {
public static function find_all() {
$result = $database->db_query("SELECT * FROM users");
return $result;
}
public static function find_by_id($id=0) {
$result = $database->db_query("SELECT * FROM users WHERE id={$id}"); // Line 26!
$final = mysqli_fetch_array($result);
return $final;
}
}
?>
<?php
include_once $_SERVER['DOCUMENT_ROOT'] . "/includes/values.php";
include_once $_SERVER['DOCUMENT_ROOT'] . "/includes/class_user.php";
?>
<?php
class MySqlDatabase {
private $connection;
function __construct() {
$this->db_connect();
$database = new MySqlDatabase(); // ------I'm instantiating $database!------
}
public function db_connect() {
$this->connection = mysqli_connect(DB_SERVER, DB_USERNAME, DB_PASSWORD, DB_NAME);
if (!$this->connection) {
die("Database connection failed: " . mysqli_error($this->connection));
}
}
public function db_query($sql) {
$result = mysqli_query($this-connection, $sql);
if (!$result) {
die("Database query failed: " . mysqli_error($this->connection));
}
return $result;
}
}
Here's the code I'm trying to execute:
<?php
include_once $_SERVER['DOCUMENT_ROOT'] . "/includes/values.php";
include_once $_SERVER['DOCUMENT_ROOT'] . "/includes/functions.php";
include_once $_SERVER['DOCUMENT_ROOT'] . "/includes/class_database.php";
include_once $_SERVER['DOCUMENT_ROOT'] . "/includes/class_user.php";
?>
<?php
$found = User::find_by_id(1);
echo $found;
?>
Error received:
Fatal error: Call to a member function db_query() on a non-object in ..\includes\class_user.php on line 26
As far as I know this would happen if I wouldn't instantiate $database = new MySqlDatabase(); but I do it in my constructor, and I include the class_database.php file in my class_user.php file.