Fehler bei Datenbankverbindung hersellen/schließen mit funkt

Hallo.
Ich habe ein Problem.
Ich habe versucht meine Datenbankverbindung mit funktionen zu steuern, leider wird ein fehler ausgegeben, wenn ich die verbinfung schließen will.

meine funktionen:

damit werden die funktionen aufgerufen:

/* Connection to DB */ db_connect(); /* Closes DB-Connection */ db_close();

jetzt bekomme ich eine fehlermeldung in der zeile, in der die verbindung geschlossen werden soll.

Fatal error: Call to a member function db_close() on a non-object in /xyz on line x

habs schon mit global $db versucht, klappt aber leider nicht.

könnt ihr mir da helfen?^^

grüße,
sebastian

Deine Funktion db_close kennt kein $db.

Du möchtest dich über den Scope, den Gültigkeitsbereich von Variablen, schlau machen.
php.net/manual/en/language.v … .scope.php

(Und nein, global ist im Allgemeinen kein guter Weg.)

wenn ich das jetzt richtig verstanden habe bedeutet das, dass ich die verbindung nicht in eine funktion auslagern kann?!

grüße,
sebastian

Nein, bedeutet es nicht.

$db = new mysqli(DB_HOST, DB_USER, DB_PASSWORD, DB_DATABASE);
vor die funktion setzten?

[quote=“lenz”]$db = new mysqli(DB_HOST, DB_USER, DB_PASSWORD, DB_DATABASE);
vor die funktion setzten?[/quote]
Quatsch, warum? Du willst die Verbindung doch in einer Funktion herstellen.

Davon, dass Funktion Rückgabewerte haben können, und dass man ihnen Parameter übergeben kann, wirst du doch wohl schon gehört haben?
(Andernfalls nimm den “Ich programmiere für Euch!”-Teil aus deiner Sig mal lieber raus.)

natürlich habe ich davon schon gehört, aber ich steh im moment irgendwie aufm schlauch xD

Was denn für ein Schlauch …?

Deine Funktion db_close kennt die hergestellte Verbindung nicht.
Also mache sie ihr bekannt, dann kannst du sie auch schliessen.

xD bin jetzt ein stück zur seite gegangen.

$db = db_connect(); db_close($db);

danke :slight_smile:

Abgesehen davon, dass es so schön und richtig ist - müsste es nicht trotzdem mit global funktioniert haben?

Wenn man’s richtig macht schon …