schubert: mysql_query stimmt was nicht

abend,

ich habe nun meine Berechnugen direkt in den mysql_query gepackt, was mir einiges an Arbeitsschritten ersparen soll.

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);
    == von dem punkt oder komma will er eins nicht haben und wenn ich eins weglasse bekomme ich ein Fehler:

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

Wenn ihr vielleicht mal kurz rüber schauen würdet, ich weiss nicht mehr weiter.

mfg schubert;

  1. hi,

    müsste sich um den punkt oder das Komma vor $connect zum Schluss des query handeln.

    mfg schubert;

  2. Hello,

    $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);

    Was soll der Punkt vor dem Komma vor $connect?

    if (!$abfrag)
       {
          echo htmlspecialchars(mysql_error($connect));
       }

    Und dann solltest Du schon mehr wissen.

    Ein harzliches Glückauf

    Tom vom Berg

    --
    Nur selber lernen macht schlau
    http://bergpost.annerschbarrich.de
    1. hallo,

      ok, vielleicht hätte ich den punkt noch als verbindung gebraucht. Nun gut, wenn ich ihn weglasse bekomm ich die eingegrenzte Fehlermeldung dank deines tipps mit mysql_error.

      near 'by (tarif.grundgebuehr*12)+((tarif.preis1*1000)/100) asc' at line 1

      und ich seh hier keinen Fehler, so hat es auch direkt bei mysql geklappt.

      ???

      mfg schubert;

  3. 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.

    1. Hallo,

      danke für diesen Text.

      Tatsache es lag wohl an einem leerzeichen und zwar an einer Stelle wo ich es  ziemlich bremsend finde wenn man dort auf leerzeichen achten muss.

      ich kannte bisher eigentlich nur die mysql_query funktion, welche gibt es denn noch?

      Jedenfalls werde ich versuchen diese Dinge morgen umzusetzen, jetzt muss ich schlafen gehen.

      mfg schubert;

  4. echo $begrüßung;

    ich habe nun meine Berechnugen direkt in den mysql_query gepackt, was mir einiges an Arbeitsschritten ersparen soll.

    Wenn du dein Posting so beginnst, nimmst du sicher auch an, jeder Mitlesende wüsste nun sofort, auf was du dich beziehst. Das ist aber nicht der Fall. Wenn das Thema noch nicht im Archiv gelandet ist, solltest du dort weitermachen. Wenn es schon weg ist, solltest du es verlinken. Sonst ist der Zusammenhang nicht sichtbar und hilft den anderen nicht, dir und deinem Problem zu helfen.

    $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);
    mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in

    Das ist eine der häufigsten, wenn nicht sogar die häufigste Fehlermeldung beim Zusammenspiel von MySQL und PHP. Zu diesem Folgefehler gibt es wahrlich genug Information. Er besagt, dass du vorhergehende Funktionen nicht richtig angewendet hast. Du hast dabei übersehen, dass in deinem Fall mysql_query() im Fehlerfall ein false zurückliefert. Dieses false ist aber kein gültiges Argument für die nachfolgende Funktion. Schreibe dein Script am besten so um, dass es auch Fehlerfälle berücksichtigt und weder stur durchläuft, noch daran stirbt, noch den Besucher mit technischen Details versorgt, die ihn nichts angehen.

    Aus deiner mysql_error()-Ausgabe ist zu erkennen, dass ein Syntaxfehler bemängelt wird. Schau dir das SQL-Statement an, nicht den PHP-Code, der es zusammenbaut. Dazu wird es notwendig sein, es zunächst in einer Variable zu erstellen, die man dann ausgeben kann.

    Beschäftige dich außerdem mit dem Thema Database Security, speziell mit der SQL-Injection. Auch Magic Quotes muss leider erwähnt werden.

    echo "$verabschiedung $name";

    1. Ich werde wohl langsam müde, jetzt seh ich das.

      where = ....order by , alles klar so eine sch...

      danke.

      morgen bin ich wieder da.

      mfg schubert;