Vinzenz Mai: SQL-Syntaxfehler, PHP-Fehler, Doppelposting, ...

Beitrag lesen

Hallo

ich habe nun meine Berechnugen direkt in den mysql_query

mysql_query() ist eine veraltete PHP-Funktion, die Du besser nicht mehr benutzen solltest.

gepackt, was mir einiges an Arbeitsschritten ersparen soll.

wohl eher in ein SQL-Statement.

nur leider wird mir der result-resource als Fehler ausgegeben.

$abfrag =  mysql_query("select tarif.tarifname, tarif.grundgebuehr, tarif.preis1 from plz, tarif, plz_anb where plz_anb.plz = plz.plz and tarif.tarifname = plz_anb.tarifname and plz.plz =".$_GET['plz']."order by (tarif.grundgebuehr*12)+((tarif.preis1*".$_GET['verbrauch'].")/100) asc".,$connect);

Wenn man mysql_query verwendet, ist dies die schlechtestmögliche Art und Weise, eine Abfrage abzusetzen.

mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in

PHP-Code ist bei SQL-Fragen völlig uninteressant. MySQL nimmt kein PHP entgegen, sondern in diesem Fall eine SQL-Anweisung. Lass Dir diese ausgeben, _bevor_ Du sie an MySQL weiterreichst. Mit dem derzeitigen Vorgehen geht das nicht.

Sträflicherweise verzichtest Du auf den notwendigen Einsatz der Funktion mysql_real_escape_string(), notierst die SQL-Anweisung völlig unübersichtlich:
Es ist üblich, SQL-Elemente in Großbuchstaben zu schreiben, es ist eine sehr gute Idee, die einzelnen Klauseln in eigene Zeilen zu packen (was Dein Problem für den Augenblick sogar beheben würde). Explizite Joins sind meiner Meinung nach viel übersichtlicher und leichter lesbar als implizite Joins in der WHERE-Klausel, zudem weniger fehlerträchtig, da MySQL hier in der 5er-Serie inkompatible Änderungen vorgenommen hat.

Weise die SQL-Anweisung zuerst einer String-Variablen zu, die Du anschließend zuerst einmal mit echo ausgibst, bevor Du sie an mysql_query() weitergibst. Du wirst sehen, dass Dir derzeit ein Leerzeichen fehlt.

Freundliche Grüße

Vinzenz,

der grundsätzlich der Ansicht ist, dass diese Frage besser in Deinem alten Thread aufgehoben gewesen wäre - und sich daher durchaus überlegt hat, diesen Thread einfach zu ignorieren.
Tom hätte Dich meiner Meinung nach besser darauf hingewiesen, dass Dies ein unerwünschtes Doppelposting ist.