Hey!
Ich habe gerade mal eine Grundstruktur mit OOP probiert, allerdings habe ich ein paar Fragen:
1. Ich bekomme hierbei den Fehler
Fatal error: Uncaught Error: Call to a member function prepare() on null in C:\xampp\htdocs\class\User.php:10 Stack trace: #0 C:\xampp\htdocs\index.php(5): User->getUser() #1 {main} thrown in C:\xampp\htdocs\class\User.php on line 10
Allerdings weiß ich aber nicht, wie ich das beheben soll. Soll ich die connection in einer globalen Variable definieren?
2. Soll das bei idealer objektorientierer Programmierung bei jedem Statement gemacht werden? Soll praktisch im Idealfall kein SQL-Statement mehr direkt im Code stehen, sondern nur in Klassen bzw. Funktionen?
Danke schon mal!
<?php
require 'class/Database.php';
require 'class/User.php';
$user = new User();
echo $user->getUser();
?>
<?php
class User
{
private $conn;
public function getUser()
{
$statement = $this->conn->prepare("SELECT * FROM users");
$result = $statement->execute();
$num = $statement->rowCount();
return $num;
}
}
Alles anzeigen
<?php
class Database
{
/**
* @var string
*/
private $servername;
/**
* @var string
*/
private $username;
/**
* @var string
*/
private $password;
/**
* @var string
*/
private $dbname;
protected function connection()
{
$this->servername = "localhost";
$this->username = "Web";
$this->password = "password";
$this->dbname = "website";
$conn = new PDO("mysql:host=$this->servername;dbname=$this->dbname", $this->username, $this->password, array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"));
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
return $conn;
}
}
Alles anzeigen