Sven Rautenberg: query OR die

Beitrag lesen

Moin!

Hi,

nun mal das Anonyme bei Seite....

Soso... :)

In dieser Zeile funktioniert alles so wie ich will, bei falscher angabe springt DIE an bei richtiger gehts weiter....

$result = mysql_query("SELECT * FROM $table WHERE clientid = test AND pass = test") or die ("SQL-Query fehlerhaft: ".mysql_error());

Ja klar: Wenn $table eine Tabellenbezeichnung enthält, die keiner Tabelle in der Datenbank entspricht, gibts einen SQL-Fehler. Eine sehr unschöne Methode, sowas festzustellen - das nur nebenbei bemerkt. Und noch etwas sei angemerkt: clientid = test <= Da muss test doch ganz sicher in Anführungsstriche, denn ohne Anführungsstriche nimmt MySQL IIRC nur Zahlenwerte entgegen. Oder deine clientid ist numerisch, und da steht auch nicht test, sondern 123 - dann ist natürlich alles ok.

In dieser Zeile geht nur die Fehlermeldung (DIE) nicht, das einzige was ich hier verändert habe, ist die Strings durch Variablen auszutauschen....

$result = mysql_query("SELECT * FROM $table WHERE clientid = '$test' AND pass = '$test'") or die ("SQL-Query fehlerhaft: ".mysql_error());

Typische Methode: Den Query vorher zusammensetzen und in einer Variablen speichern:
$der_query = "SELECT * FROM $table WHERE clientid = '$test' AND pass = '$test'";

$result = mysql_query($der_query) or die ("Fehler bei Query $der_query: ".mysql_error());

Auf diese Weise wird dir angezeigt, was MySQL da so verarbeiten soll, und du siehst, ob das auch Sinn macht - kann ja sein, dass in deinen Variablen nicht escapte Anführungsstriche drin sind, die deinen Query durcheinander bringen.

Und den Query wüßte ich dann gerne - wenn er das die() nicht anspringt, mach vor- oder hinterher eine Ausgabe:
echo "Der Query lautet: $der_query";

Weiter gehts mit mir dann aber erst heute Nacht oder morgen früh.

- Sven Rautenberg

--
Diese Signatur gilt nur am Freitag.