Problem mit Class

Subwoover

Erfahrenes Mitglied
Ich habe eine Klasse für DB connection geschrieben und für jede operation (query, fetch object, etc.) eine eigene fehlerfunktion.

Allerdings gibt er mir trotz erfolgreichem Query eine fehlermeldung zurück, hier die funktion:

PHP:
	function db_com_query($query) {

		if ($this->db_status == "connected") {
            if (!$this->result = mysql_query($query)) {
				$this->error_message = mysql_error();
				$this->error_number = mysql_errno();
				return 0;   
			}
		} else {
			return 0;
		}
	}

und hier die ausführung im script:

PHP:
$query = "SELECT username FROM $user_tb";

    if(!$db->db_com_query($query)) {
        echo "query failed<BR>".$db->db_com_last_error()."<BR>";	
	}

Der Fehler der in der funktion db_com_last_error generiert wird wird trotz erfolgreichem query ausgegeben, aber warum?
bei den anderen checks funktionierts so wies soll: ohne fehlermeldung nach erfolgreicher operation, also beim connecten, datenbank wählen und fetchen.

Please Help
 
ist ja nicht notwendig. Eine negative wertzuweisung ist gleich einer wertzuweisung...
Das ist nicht das problem, die funktion funktioniert ja sonst könnte ich nichts aus der DB holen, kann ich aber also daran liegts nicht...
 
Hä?

Also der Aufruf $db->db_com_query($query) kann nie und nimmer true ergeben, und da du ja den Rückgabewert dieser Funktion auswertest, wird dir immer ein Fehler ausgegeben...

Und wo ist da eine negative Wertzuweisung?
 
Das ich nicht wieder falsch verstanden werde.
Ich habe absolut nichts gegen PHP. Ich programmiere sogar sehr gerne in PHP.
Nur halte ich den Weg den die PHP Entwickler gehen für den Falschen. Es wird versucht eine Eierlegende Milchsau mit php zu kreiren.
OOP ist das beste beispiel und ungewollt dieser Thread ist ein super beispiel.

In jeder "richtigen" OOP Sprache spuckt der Compiler eine fehlermeldung aus wenn der deklarierte Rückgabe wert nicht zurück gebeben wird.
Bei Java beschwert sich der Compiler sogar dann schon wenn es theoretisch möglich währe das kein rückgabe erfolgt.

Code:
private Boolean dataInDb() {
 try { 
    String sql = "select * from Bla";
    rs = stm.executeQuery(sql);
    if(rs.next()) 
              return true;
    return false;
 catch(SQLException e) {}
}

Dieser Code lässt sich nicht kompilieren weil falls ein SQLFehler aufgefangen wird diese Methode keinen Bolschen Wert zurück gibt.

Die Stärken von PHP liegt eher darin das mann schnell dynamische Ergebnisse erziehlt und es eine nicht zu verachtenswerte Funktionsbiblothek gibt.

Hier sollte weiterentwickelt werden.
Denn die Konkurrenz in dem PHP - Bereich (z.b. Ruby) schläft nicht.
 
So danke jedenfalls, ich hab das jetzt einfach nach einer else auf einen wert gesetzt und jetzt funkts.

Was ist für euch dann also eine OOP freundliche Programmiersprache?
 
Zurück