SELECT WHERE debuggen?

Diskutiere mit über: SELECT WHERE debuggen? im Web-Programmierung Forum

  1. comrat

    comrat Thread Starter MacUser Mitglied

    Beiträge:
    112
    Zustimmungen:
    0
    Registriert seit:
    27.12.2004
    Hallo,

    gibt es eigentlich eine Möglichkeit einen langen SELECT zu debuggen ohne ein Tool installieren zu müssen?

    Um zum Beispiel herauszubekommen warum er einen oder fünf Treffer liefert, statt der erwarteten zwei, wäre es sehr praktisch, wenn er nach jeder einzelnen Bedingung (WHERE ...) einen Zwischenstand ausgeben könnte. Im Moment muß ich immer wieder neue editierte Varianten statt über den Browser im Terminal ausprobieren. Das ist eine verdammt lästige Angelegenheit :)

    Danke für einen guten Rat.
     
  2. wegus

    wegus MacUser Mitglied

    Beiträge:
    15.029
    Zustimmungen:
    1.314
    Registriert seit:
    13.09.2004
    Wenn Du mysql meinst, gibt es neben phpmyadmin noch

    defekter Link entfernt

    Wenn man mit komplexeren SQL-Strukturen nciht vertarut ist, bleibt nur der Weg der Schrittweisen Annäherung! Mach Zunächst die Abfrage, die alle Antworten enthält die Du haben willst. Verfeinere dann Schrittweise bis Du das Resultset hast, daß Du benötigst. Das dauert am Anfang recht lange, weil die Meisten von uns koplexere Mengenoperationen nicht gewohnt sind, aber nur so bekommst Du ein Gefühl dafür und lernst es.
     
  3. Jakob

    Jakob MacUser Mitglied

    Beiträge:
    1.067
    Zustimmungen:
    21
    Registriert seit:
    05.01.2004
    Hm… ich würde es so lösen:

    PHP:
    $query1 "SELECT COUNT(*) FROM table";
    $query2 $query1." WHERE name='otto'";
    $query3 $query2." AND zip='1325'";
    // usw.

    // anzahl der Queries
    $anzahl=3;

    for(
    $i=1;$i<=$anzahl;$i++){
    // ausgabe wird Variablenname zugewiesen
    $ausgabe "query".$i;
    // doppeltes $$: variabler Variablenname
    echo "<p>Query".$i.": ".$$ausgabe."<br />";
    // ermittelt Höhe von COUNT(*)
    echo mysql_result($$ausgabe,0,0)."</p>";
    }
    Puh… ich hoffe ich hab das richtig. Kann den SQL-Part grad nicht prüfen.

    Auf alle Fälle durchläuft er mit jedem loop eine Station mehr und gibt Dir die Anzahl der Ergebnisse raus.

    Hope it helps!

    P.S.: Es müsste doch einen einfacheren Weg als nen variablen Variablennamen (komisches Wort) zu nutzen um einfach durch mehrere Variablen zu for-loopen, oder? Bin leider noch ziemlich im Anfangsstadium mit PHP. Aber macht Spaß!
     
    Zuletzt bearbeitet: 05.06.2005
  4. wegus

    wegus MacUser Mitglied

    Beiträge:
    15.029
    Zustimmungen:
    1.314
    Registriert seit:
    13.09.2004
    So wie Jakob das vorschlägt geht es nat. orinzipiell!
    @Jakob: das was Du suchst sind glaub ich arrays von Strings.

    Man sollte bei SQL jedoch niemals einfach drauf los Scripten! Das hat schon so Mnachen ne Datenbank gekostet. Wichtig ist, daß man eine Abfrage nicht "Zusammenrät" sondern versteht! So sehr uns doch Mengen vertraut sind, wird es doch ab der dritten oder vierten involvierten Kombination schwierig, vor allem für Newbies. Hier hilft nur schrittweises vervollständigen und verstehen. Dazu ist ein Query-Analyzer unumgänglich. Per web ist das etwas umständlich, geht aber nat. mit phpmyadmin auch. Kontrollausgaben, wie von Jakob aufgezeigt sind sehr nützlich um hinterher im realen Einsatz zu sehen, on und wie weit alles funktioniert. Die Query-Selbst sollte man dann aber schon fertig haben.
     
  5. Jakob

    Jakob MacUser Mitglied

    Beiträge:
    1.067
    Zustimmungen:
    21
    Registriert seit:
    05.01.2004
    Ja, da stimm ich mit Dir überein.

    Wobei natürlich bis auf temporäre Performance-Einbußen bei SELECT-Befehlen nix passieren kann, oder?

    Das mit den String-Arrays versteh ich nicht.
    Ich möchte z.B. sowas
    $Bild1
    $Bild2
    $Bild3

    $Bild47

    Per Schleife durchlaufen und Code damit ausführen. Es können aber auch 35 oder mal 234 sein. Eine andere Lösung wie oben seh ich für das Problem nicht, aber gibt's bestimmt. Eine Art „intelligentes“ Hochzählen, obwohl noch Text vor der Nummer steht.

    P.S.: Irgendwie ist der Server ganz schön oft ausgelastet, oder schreib ich immer zu ungünstigen Zeitpunkten? :)
     
  6. wegus

    wegus MacUser Mitglied

    Beiträge:
    15.029
    Zustimmungen:
    1.314
    Registriert seit:
    13.09.2004
    Naja ich dachte an

    $bild[0];
    $bild[1];
    $bild[7];
    $bild['horst'];
    $bild['kunigunde'];

    und den foreach-loop aber das ist ein anderes Thema!
     
  7. CottonIJoe

    CottonIJoe MacUser Mitglied

    Beiträge:
    125
    Zustimmungen:
    12
    Registriert seit:
    23.01.2005
    allgemein um das ergebnis auszugeben könnte man doch auch

    PHP:
    // $result ist das Ergebnis der Abfrage
    $array mysql_fetch_array($result);
    echo 
    print_r($array);
     
  8. Jakob

    Jakob MacUser Mitglied

    Beiträge:
    1.067
    Zustimmungen:
    21
    Registriert seit:
    05.01.2004
    Ausgeben will's ja keiner, nur weiterverarbeiten. Aber danke für den Befehl print_r, kannte ich noch nicht. Ist zum debug bestimmt nützlich.
     
Die Seite wird geladen...
Ähnliche Themen - SELECT WHERE debuggen Forum Datum
MySQL SELECT über mehrere Tabellen Web-Programmierung 19.09.2012
MySQL-Select und PHP Switch, Sonderzeichen Web-Programmierung 06.12.2006

Diese Seite empfehlen

Benutzerdefinierte Suche