Frage

Für ein neues Projekt, das ich in PHP zu tun Ich habe eine SQLMethods Klasse erstellt, um die Datenbank zu verbinden und Abfragen durchführen. Heute Abend war die erste Nacht, die ich tatsächlich bekam es zu testen (ich es geschrieben habe eine Woche oder so vor und es vergessen) und ein unerwarteter Fehler ist aufgetreten: Als es meine ExecuteQuery () Funktion aufrufen, wäre es nicht die Datenbank Ich benutze im Konstruktor ausgewählt.

Der Konstruktor:

    public function SQLMethods() {
        $SQLConnection = mysql_connect($SQLDBAddress, $SQLUserName, $SQLPassword);

        if (!$SQLConnection) {
            die('Could not connect: ' . mysql_error());
        }

        mysql_select_db($SQLDB, $SQLConnection);
    }

Die Funktion in Frage:

    public function ExecuteQuery($Query) {
        mysql_query($Query, $SQLConnection) or die('Could not perform query: ' . mysql_error());
    }

Hat jemand sehen, was das Problem sein könnte? Ist die Verbindung geschlossen, nachdem der Konstruktor abgeschlossen?

War es hilfreich?

Lösung

Sie sollten $ SQLConnection in Ihrer Klasse deklarieren, und Sie sollten es als

siehe
 $this->SQLConnection

und nicht einfach $ SQLConnection-.

Andere Tipps

$SQLConnection existiert nicht innerhalb der ExecuteQuery Methode.

Sie kann entweder übergeben Sie es direkt als Parameter an ExecuteQuery oder eine sqlConnection Klasse Eigenschaft hinzufügen, die im Konstruktor und der Zugriff als $this->sqlConnection in Ihrer Klassenmethode festgelegt ist.

Die Variable $SQLConnection ExecuteQuery() versucht, in einem anderen Rahmen geschaffen zu verwenden. (Die SQLMethods-Funktion).

Die Verbindung wird geschlossen, wenn der PHP-Skript seine Arbeit getan hat, oder wenn Sie schließen Sie es selbst (wenn die Verbindung innerhalb dieses Skripts gemacht wird)

Sie sollten die $SQLConnection Variable innerhalb ExecuteQuery überspringen, wie durch die php.net Dokumentation angegeben

  

Wenn die Verbindungskennung nicht angegeben ist, das letzte Glied von mysql_connect() geöffnet angenommen wird.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top