SELECT WHERE debuggen?

C

comrat

Aktives Mitglied
Thread Starter
Dabei seit
27.12.2004
Beiträge
112
Reaktionspunkte
0
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.
 
Wenn Du mysql meinst, gibt es neben phpmyadmin noch

CocoaSQL

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.
 
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:
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.
 
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? :)
 
Naja ich dachte an

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

und den foreach-loop aber das ist ein anderes Thema!
 
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);
 
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.
 
Zurück
Oben Unten