Andre: Rückgabewert bei Fehler?

Version (ka wo ich das nachschaue) 4.1.22-max-log

Gibt es eine Möglichkeit einen Rückgabewert zu bekommen, wenn ein query durchlaufen wird?
Also wenn er ohne Fehler / Probleme ausgeführt wurde gibt er z.B. true oder iwas zurück & wenn nicht, dann liefert er false oder dergleichen zurück?

Wäre lieb, wenn jemand eine Antwort darauf weiß und diese nennt. :)

  1. Gibt es eine Möglichkeit einen Rückgabewert zu bekommen, wenn ein query durchlaufen wird?

    Also zumindest bei PostgreSQL und MySQL ist es so, dass bei Erfolg die affected Rows angezeigt werden und bei einem Fehler eine entsprechende Meldung.

    Da du ein Geheimis aus der gewünschten/verwendeten Datenbanksoftware machst, ist dummerweise keine konkrete Aussage möglich.

    Und so nebenbei, eine Versionsnummer ist genauso aussagekräftig wie das Nummernschild über den Fahrzeugtypen.

    1. Huhu,
      ich rede von PHP bzw. SQL Datenbanken.

      Hatte mich da wohl außerdem falsch ausgedrückt.
      Beispiel:
      Wenn ich jetzt eine Schleife ablaufen lasse, und z.B. eine Variable nicht definiert ist (weil vorher etwas schief gelaufen ist), aber genau diese Variable bei der WHERE - Klausel genutzt wird, dann kommt ja (zumindest bei mir) keine Fehlermeldung, sondern der query wird erst garnicht ausgeführt.
      Darum auch die Frage, ob ich das Ganze nicht irgendwie noch einmal verschachteln kann und somit einen Rückgabewert habe um wenigstens entsprechende Meldungen anzeigen zu lassen.
      Ich hoffe ich habe mich dieses Mal besser ausgedrückt^^
      lG Andre

      1. Hallo,

        ich rede von PHP bzw. SQL Datenbanken.

        Wenn ich jetzt eine Schleife ablaufen lasse, und z.B. eine Variable nicht definiert ist (weil vorher etwas schief gelaufen ist), aber genau diese Variable bei der WHERE - Klausel genutzt wird, dann kommt ja (zumindest bei mir) keine Fehlermeldung, sondern der query wird erst garnicht ausgeführt.

        doch sicher, und MySQL wird mit einer Fehlermeldung reagieren. Da Du anscheinend die veralteten mysql_*-Funktionen verwendest, solltest Du im Anschluss an das Absetzen der Abfrage prüfen, was mysql_error() zu sagen hat.

        Mein obligatorischer Hinweis: Verwende die verbesserte MySQL-Unterstützung mysqli. Dort erfährst Du MySQL-Fehlermeldungen über mysqli -> error().

        Freundliche Grüße

        Vinzenz

        1. Ich danke dir vielmals :)
          Werde ich gleich mal in die Tat umsetzen.
          Liebe Grüße, Andre

      2. echo $begrüßung;

        ich rede von PHP bzw. SQL Datenbanken.

        PHP ist einigermaßen klar umrissen, aber "SQL Datenbanken" nicht. Derer gibt es einige. Ich gehe mal von MySQL aus, weil deine Versionsnummer darauf passt.

        Wenn ich jetzt eine Schleife ablaufen lasse, und z.B. eine Variable nicht definiert ist (weil vorher etwas schief gelaufen ist),

        Variablenzuweisungen laufen im Allgemeinen nicht schief. Sorge auch bei bedingten Zuweisungen dafür, dass Variablen mit einem Default-Wert initialisiert sind, beispielsweise außerhalb des bedingten Programmteils.

        aber genau diese Variable bei der WHERE - Klausel genutzt wird, dann kommt ja (zumindest bei mir) keine Fehlermeldung, sondern der query wird erst garnicht ausgeführt.

        MySQL-Fehlermeldungen werden zunächst durch entsprechende Rückgabewerte der mysql_*-Funktionen signalisiert. Das musst du auswerten, bevor du fortfährst. Den genauen Wortlaut der Meldung bekommst du mir mysql_error().

        Darum auch die Frage, ob ich das Ganze nicht irgendwie noch einmal verschachteln kann und somit einen Rückgabewert habe um wenigstens entsprechende Meldungen anzeigen zu lassen.

        Im Prinzip muss man die weitere Abarbeitung abhängig machen vom:

        • Erfolg des Connects (Verbindungskodierung aushandeln nicht vergessen!)
        • erfolgreicher Datenbankauswahl
        • erfolgreicher Ausführung des Statements
        • Ergebnismenge hat noch Inhalt.
          Das sind also drei verschachtelte Fallunterscheidungen und eine Schleife mit Abbruchbedingung. Der vierte Punkt fällt natürlich nur bei Abfragen mit (auch leeren) Ergebnismengen an.

        echo "$verabschiedung $name";

      3. Mahlzeit Andre,

        ich rede von PHP bzw. SQL Datenbanken.

        Dann hättest Du das schreiben sollen. Von PHP war in Deinem Ausgangsposting nicht die Rede.

        Wenn ich jetzt eine Schleife ablaufen lasse, und z.B. eine Variable nicht definiert ist (weil vorher etwas schief gelaufen ist), aber genau diese Variable bei der WHERE - Klausel genutzt wird, dann kommt ja (zumindest bei mir) keine Fehlermeldung, sondern der query wird erst garnicht ausgeführt.

        Wird schon - nur liefert die entsprechende PHP-Funktion dann einen Rückgabewert, der auf einen Fehler hindeutet. Den musst Du dann nur auswerten.

        Darum auch die Frage, ob ich das Ganze nicht irgendwie noch einmal verschachteln kann und somit einen Rückgabewert habe um wenigstens entsprechende Meldungen anzeigen zu lassen.

        Was meinst Du mit verschachteln? Du bekommst in jedem Fall einen Rückgabewert von den PHP-Datenbankfunktionen (welche nutzt Du?) - Du musst damit nur umgehen (können).

        Ich hoffe ich habe mich dieses Mal besser ausgedrückt^^

        Noch nicht wirklich. Wie wär's mit etwas Beispielcode?

        MfG,
        EKKi

        --
        sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
  2. echo $begrüßung;

    Gibt es eine Möglichkeit einen Rückgabewert zu bekommen, wenn ein query durchlaufen wird?

    Das kommt darauf an, in welchem Kontext du den Rückgabewert erwartest. Befindest du dich beispielsweise in einer Stored Procedure? Das können wir ausschließen, das konnte MySQL 4.1 noch nicht. Benutzt du die Funktionen der MySQL-API, geschrieben in C? Oder verwendest du andere Funktionen in anderen Umgebungen, PHP beispielsweise? Was sagt die Dokumentation der von dir verwendeten Funktion?

    Also wenn er ohne Fehler / Probleme ausgeführt wurde gibt er z.B. true oder iwas zurück & wenn nicht, dann liefert er false oder dergleichen zurück?

    Die MySQL-API-Funktion mysql_query() und mysql_real_query() liefern nur fehlerhaft oder fehlerfrei zurück. Über andere Funktionen erhält man die Ergebnismenge, die entweder gefüllt oder leer sein kann. Die Anzahl der Zeilen weißt du erst nach einer vollständigen Abfrage. Bei Daten verändernden Anweisungen kann man über mysql_affected_rows() die Anzahl der betroffenen Datensätze abfragen.

    echo "$verabschiedung $name";

    1. Die MySQL-API-Funktion mysql_query() und mysql_real_query() liefern nur fehlerhaft oder fehlerfrei zurück. Über andere Funktionen erhält man die Ergebnismenge, die entweder gefüllt oder leer sein kann. Die Anzahl der Zeilen weißt du erst nach einer vollständigen Abfrage. Bei Daten verändernden Anweisungen kann man über mysql_affected_rows() die Anzahl der betroffenen Datensätze abfragen.

      Das nutze ich.
      Bin noch ein totaler Anfänger, daher sind die Begriffe z.T. noch Neuland für mich.
      Hab ich das also richtig verstanden, dass ich (wie im anderen Beitrag erwähnt) nicht abfrageb kann, ob die Schleife mit z.B. 3 querys auch wirklich komplett durchlaufen wurde, oder bezieht sich die Antwort auf meine Frage auf den oberen zitierten Teil? ^^

      Vielen lieben Dank, das war schonmal eine große Hilfe :)
      lG Andre

      1. echo $begrüßung;

        Die MySQL-API-Funktion mysql_query() und mysql_real_query() liefern nur fehlerhaft oder fehlerfrei zurück. Über andere Funktionen erhält man die Ergebnismenge, die entweder gefüllt oder leer sein kann. Die Anzahl der Zeilen weißt du erst nach einer vollständigen Abfrage. Bei Daten verändernden Anweisungen kann man über mysql_affected_rows() die Anzahl der betroffenen Datensätze abfragen.

        Das nutze ich.

        Eher nicht. Jedenfalls nicht direkt, wenn du PHP verwendest, da gibt es eigene Funktionen die zwischen dir und der MySQL-Client-API sitzen und teilweise anders reagieren als gleichamige Client-API-Funktionen.

        Hab ich das also richtig verstanden, dass ich (wie im anderen Beitrag erwähnt) nicht abfrageb kann, ob die Schleife mit z.B. 3 querys auch wirklich komplett durchlaufen wurde, oder bezieht sich die Antwort auf meine Frage auf den oberen zitierten Teil? ^^

        Bitte informiere dich zunächst im PHP-Handbuch über die von dir verwendeten Funktionen. Insbesondere solltest du stets wissen oder nachlesen, welches Ergebnis eine Funktion im Gutfall und was im Fehlerfall zurückliefert und daraufhin die Programmausführung entsprechend beeinflussen.

        Bin noch ein totaler Anfänger, daher sind die Begriffe z.T. noch Neuland für mich.

        Egal, ob du Anfänger bist oder mit den Fachbegriffen nur so um dich wirfst, beschreibe Probleme bitte so genau wie möglich, dass jemand anderes sie nachvollziehen kann. Das ist nicht immer leicht, doch letzlich beeinflusst das die Qualität der Antworten und ist damit deiner Problemlösung dienlich. Mitunter löst sich ein Problem wie von selbst, wenn man es nur genau genug zu beschreiben versucht.

        echo "$verabschiedung $name";

  3. Hallo,

    Version (ka wo ich das nachschaue) 4.1.22-max-log

    MySQL vermutlich :-)

    Gibt es eine Möglichkeit einen Rückgabewert zu bekommen, wenn ein query durchlaufen wird?

    den bekommst Du doch, wo ist das Problem?
    Vielleicht schilderst Du deutlicher, wie Du auf Deinen Datenbankserver zugreifst, welche Ergebnisse Du erwartest und welche Du erhältst. Irgendeinen Client oder irgendeine API musst Du ja verwenden. Welche?

    Freundliche Grüße

    Vinzenz