kostenloser Webspace werbefrei: lima-city


MySQL - "or die"

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    voloya

    voloya hat kostenlosen Webspace.

    Hallo :wave:

    Wenn ich bei MySQL "or die" verwende, zum Beispiel nach einer fehlgeschlagenen Abfrage, dann hört der Seitenaufbau bei besagter fehlerhaften Abfrage auf, was natürlich störend ist.

    Deswegen habe ich mir als Alternative mit if() ausgedacht also:
    if($mysql)
    {Code läuft weiter}
    
    else {echo "es ist ein Fehler aufgetreten";}


    Leider sind dann in meinem Code lauter IF-Abfragen drin. Da "or die ()" auf eigentlich allen MySQL-Tutorial-Seiten verwendet wird gehe ich mal davon aus, dass es keine kurze und zeilensparende Alternative gibt, oder haben die einfach keine Ahnung? :biggrin:

    Natürlich sind fehlerhafte Abfragen nicht die Regel, aber wenn man z.B. einen (gefilterten, selbstverständlich) GET-Parameter in der Datenbank nachschlagen lässt dann muss man ja irgendeinen Fehler ausgeben falls der Eintrag nicht existiert. :P

    Ich dachte da an eine Funktion, bloß habe ich leider keine Ahnung von Funktionen und weiß deswegen nicht ob und wie das geht.
    fehlerfunktion($mysql);

    ? :king:

    mfg :wave:
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. m**********n

    Ich löse den Spaß so: Ich habe mir eine eigene Klasse Database erstellt, die alle MySQL-Abfragen tätigt. Wenn ich nun eine Abfrage machen will, dann rufe ich einfach
    $result = $this->database->Query("Mein Query")

    auf.

    Dann kann ich innerhalb der Funktion sämtliche Fehler abfangen also so:
    private function Query($query)
    {
    	$result = mysql_query($query, $this->connection);
    	if(!$result) die("Invalid query: " . mysql_error());
    	return $result;
    }


    So hast du nur ein einziges if-Statement.

    Ich hoffe, dass ich dein Problem auch richtig verstanden habe ;)

    Lg

    mator

    Beitrag zuletzt geändert: 27.5.2012 20:25:57 von mator-kaleen
  4. Autor dieses Themas

    voloya

    voloya hat kostenlosen Webspace.

    Hallo :wave:

    mator-kaleen schrieb:
    So hast du nur ein einziges if-Statement.

    Ich hoffe, dass ich dein Problem auch richtig verstanden habe ;)


    Ja genau so etwas in der Richtung suche ich, jedoch ohne "die()", da ja dann der Seitenaufbau abbricht.

    mfg :wave:
  5. m**********n

    Was für Daten willst du denn mit der DB auslesen? Deinen Website-Content? Irgendwelche speziellen Daten? Solange ich das nicht weiß, kann ich dir keine konkreten Tipps zur Umsetzung geben.

    Lg

    mator
  6. Autor dieses Themas

    voloya

    voloya hat kostenlosen Webspace.

    Hallo :wave:

    mator-kaleen schrieb:
    Was für Daten willst du denn mit der DB auslesen? Deinen Website-Content? Irgendwelche speziellen Daten? Solange ich das nicht weiß, kann ich dir keine konkreten Tipps zur Umsetzung geben.

    Ist das nicht egal? Ich suche lediglich nach einer Funktion ohne "die ()" die mir mehrere IF-Abfragen spart welche ich immer dann setze wenn etwas abgefragt wird.

    - Verbindung zur Datenbank
    - Auswählen der Tabelle
    - Auswählen der Spalte
    - neue Spalte anlegen + Sachen eintragen

    Und das kommt alles öfter in meinem Code vor, z.B. SELECT content FROM home, SELECT title FROM home
    Oder der Abruf und das Eintragen von mit md5()+salt verschlüsselten IP-Adressen, die Spam bei einer contact form vermeiden sollen...

    mfg :wave:
  7. hackyourlife

    Moderator Kostenloser Webspace von hackyourlife

    hackyourlife hat kostenlosen Webspace.

    voloya schrieb:
    Ja genau so etwas in der Richtung suche ich, jedoch ohne "die()", da ja dann der Seitenaufbau abbricht.
    Du machst sowas:
    $mysql = mysql_connect bla bla bla;
    if($mysql) {
    	// mach was
    } else {
    	echo "fail!";
    }
    Das or die macht nicht mehr als die IF-Verzweigung... und das die sorgt dafür dass nicht weitergearbeitet wird, weil ja ein Fehler aufgetreten ist der den Rest unmöglich macht... (z.B. ohne DB-Verbindung keine Queries).

    Das or die ist eben der schnellste Weg die Ausführung abzubrechen und eine Fehlermeldung auszugeben, darum sieht man das auch in den Tutorials.
  8. m**********n

    voloya schrieb:
    Ist das nicht egal? Ich suche lediglich nach einer Funktion ohne "die ()" die mir mehrere IF-Abfragen spart welche ich immer dann setze wenn etwas abgefragt wird.


    Das ist nicht egal ;)

    Wenn die Daten so wichtig sind, dass du ohne sie deine HP nicht darstellen kannst, dann musst du es anders lösen.

    Bei mir löse ich es zumindest so:
    Ich habe eine eigene Content Klasse, die mir meinen Content generiert. In der könnte ich hergehen und eine ThrowMySQLErr() Funktion anlegen. Nun wird das Template wie gewohnt aufgerufen und dann könnte man eine Fehlermeldung ausgeben, in der Art so:
    Sorry, es trat ein Fehler in unserer Datenbank auf.


    Da ich aber nicht weiß, wie dein System funktioniert, musst du wohl oder übel eine eigene Lösung suchen. Wie hackyourlife beschrieben hat, ist ein die() nicht unbedingt notwendig.

    Lg

    mator

    Edit: BTW, seit wann ist Syntaxhiglighting möglich?

    Beitrag zuletzt geändert: 27.5.2012 20:25:27 von mator-kaleen
  9. hackyourlife

    Moderator Kostenloser Webspace von hackyourlife

    hackyourlife hat kostenlosen Webspace.

    mator-kaleen schrieb:
    Wenn die Daten so wichtig sind, dass du ohne sie deine HP nicht darstellen kannst, dann musst du es anders lösen.
    Warum? Mit der if-Verzweigung entweder die Daten oder eine Fehlermeldung ausgeben...
    Wenn bei einem SELECT o.ä. ein Fehler auftritt ohne dem die Seite nicht funktioniert musst du eben einen Fehler ausgeben und den Rest übergehen; bei die würdest du das nicht brauchen, weil das Script ja abbrechen würde.

    mator-kaleen schrieb:
    Edit: BTW, seit wann ist Syntaxhiglighting möglich?
    seit dem letzen Update...
    Beschreibung gibts hier
  10. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!