Hello,
# Datenbankwerte setzen public function db\_set\_vars($host,$name,$pw,$dbname){ $db\_host=$host; $db\_user=$user; $db\_pw=$pw; $db\_name=$dbname;
... und das musst du auch. So wie du es mit der self::$instance gemacht hast, musst du es auch mit den anderen Klassenvariablen machen.
Allerdings darf das Setzen der Zugangsdaten - so du es doch von außen tun willst - nicht als Methode der Instanz implementiert sein. Denn in dem Fall müsste der erste Verwender die Zugangsdaten setzen und die anderen brauchen und dürfen das nicht mehr. Woher weiß denn aber der erste, dass er der erste ist?
Was meinst Du, wofür es die Methode getInstance() gibt und wofür ein Konstruktor vorhanden ist?
Zweitere ist mMn der richtige Platz, um Anfangswerte zu setzen!
Aufgabe der DB-Klasse ist nicht, auf den Bildschirm zu malen. Wenn sie sich mitzuteilen gedenkt, dann über Rückgabewerte oder Fehlermeldungen oder Exceptions.
$user="name";
$pw="pw";
$sql="INSERT INTO users(user,pw) VALUES('".$user."','".$pw."')";
ACK
Wenn du die Query selbst zusammenbaust, musst du dich auch selbst um die kontextgerechte Behandlung kümmern. Mit diesen beiden Werten ist das zwar nicht nötig, aber wenn es nur ein Test sein sollte, hättest du die Werte auch direkt in die Query einbauen können.
Die Werte sollten der Query typgerecht übergeben werden. Dazu muss man aber die Spaltentypen, ihre Ranges und Defaults vorher beschaffen. Alternativ sind wir dann bei prepared Statements, weil eine textuelle Schnittstelle (SQL) bei Verwendung einer komplexen API/Datenbankklasse kaum noch Existenzberechtigung hat.
Liebe Grüße aus dem Cyberspace
Tom vom Berg