Ich versuchte, meine Datenbank mit meinem PHP-Code zu verbinden und es wurde abgeschlossen, aber versucht, Informationen zu senden zu meiner Datenbank, aber es gibt den folgenden Fehler zurück Ich versuchte es durch Erstellen eines Objekts und Aufruf der Methode der Klasse, aber es gab mir den Fehler in der Zeile Ich denke, es gibt ein Problem beim Aufruf der Funktion, konnte aber den Fehler nicht verstehen und sogar versuchte googeln konnte aber das ProblemSchwerwiegender Fehler: Uncaught Fehler: Aufruf einer Memberfunktion connect() auf Null in C: xampp htdocs oophp Home.php
Fatal error: Uncaught Error: Call to a member function connect() on null in C:\xampp\htdocs\oophp\Home.php:15 Stack trace: #0 C:\xampp\htdocs\oophp\Home.php(47): Home->__construct('example', 'example123', '[email protected]') #1 {main} thrown in C:\xampp\htdocs\oophp\Home.php on line 15
und den Code in connect.php ist
<?php
class Connect
{
protected $connection;
public function __construct()
{
}
public function connect(){
try
{
$this->connection = new
PDO('mysql:host=localhost;dbname=oo;charset=utf8mb4','root','');
echo "connected sucessfully";
return $this->connection;
}
catch(PDOException $e)
{
echo "connection failed : " . $e->getMessage();
}
}
}
?>
nicht lösen
und Code in home.php ist
<?php
require_once __DIR__ . '\Connect.php';
class Home extends Connect{
protected $user = array();
protected $var0;
protected $response = array();
protected $username;
protected $password;
protected $email;
protected $var1;
public function __construct($username , $password ,$email)
{
$var0 = new Connect();
$var1 = $this->var0->connect();
$this->username = $username;
$this->password = $password;
$this->email = $email;
}
public function Insert()
{
try
{
global $var1;
$insert = $this->var1->prepare("INSERT INTO person
(username,password,email) VALUES (:username,:password,:email)");
$insert->bindParam(':username',$this->username);
$insert->bindParam(':password',$this->password);
$insert->bindParam(':email',$this->email);
$insert->execute();
}
catch(PDOException $e)
{
echo $e;
}
if(row_Count($insert)>0)
{
$this->response["status"] = 1;
echo "Sucessfully inserted to database";
}
else
{
$this->response["status"] = 0;
echo "there is a error in inserting";
}
}
}
$dfg = new Home("example","example123","[email protected]");
$dfg->Insert();
?>
ich das Problem nicht finden können, aber ich denke, es ist ein Fehler bei connect() Funktion, Dank für jede Hilfe
Sie definieren '$ this-> var0 'nie, bevor Sie versuchen, es zu verwenden. Ändern Sie '$ var0 = new Connect();' zu '$ this-> var0 = new Connect();'. Tun Sie dasselbe für '$ var1' in Ihrem Konstruktor und entfernen Sie das' global $ var1' in Ihrer 'Insert()' - Methode –
Vorschlag, machen Sie Ihre Eigenschaft und Variablennamen beschreibend. Benutze keine generischen Namen wie '$ var0',' $ var1' etc. Du wirst mir später danken. –