Anonymus: query OR die

Hi,

kleines Problem:

$result = mysql_query("SELECT * FROM $table WHERE test = '$variable' AND test1 = '$variable'") OR DIE ("Access denied");

irgendwie verträgt sich das nicht mit den '$variable' wenn ich die '' rausnehme klappt es mit OR DIE aber natürlich gehen die Variablen nicht mehr....
Weiss jemand einen ausweg?

Danke....

Gruss

Ano

  1. Hi,

    Hi,

    kleines Problem:

    $result = mysql_query("SELECT * FROM $table WHERE test = '$variable' AND test1 = '$variable'") OR DIE ("Access denied");

    irgendwie verträgt sich das nicht mit den '$variable' wenn ich die '' rausnehme klappt es mit OR DIE aber natürlich gehen die Variablen nicht mehr....
    Weiss jemand einen ausweg?

    Irgendwie verträgt sich das nicht, wenn du keine Fehlerbeschreibung angibst. Irgendwas geht nicht - WAS GENAU GEHT NICHT? Fehlermeldungen? Inhalt von $variable? Inhalt des Querys insgesamt?

    Danke....

    bitte....

    Gruss

    Ano

    Gruss

    Ano

    1. Hi Ano,

      Irgendwie verträgt sich das nicht, wenn du keine Fehlerbeschreibung angibst. Irgendwas geht nicht - WAS GENAU GEHT NICHT? Fehlermeldungen? Inhalt von $variable? Inhalt des Querys insgesamt?

      so wie es da steht funktioniert alles ausser der Fehlermeldung(DIE),,,

      $result = mysql_query("SELECT * FROM $table WHERE test = '$variable' AND test1 = '$variable'") OR DIE ("Access denied");

      so wie es da steht funktioniert die fehlermeldung aber die variablen nicht...

      $result = mysql_query("SELECT * FROM $table WHERE test = '$variable' AND test1 = '$variable'") OR DIE ("Access denied");

      sollte nun verständlich sein...

      Gruss

      Ano

      1. Hi Ano,

        so wie es da steht funktioniert alles ausser der Fehlermeldung(DIE),,,

        $result = mysql_query("SELECT * FROM $table WHERE test = '$variable' AND test1 = '$variable'") OR DIE ("Access denied");

        so wie es da steht funktioniert die fehlermeldung aber die variablen nicht...

        $result = mysql_query("SELECT * FROM $table WHERE test = '$variable' AND test1 = '$variable'") OR DIE ("Access denied");

        sollte nun verständlich sein...

        Nein, ist es nicht. Du hast zweimal identischen Code - der eine geht so, der andere geht anders - irgendwie klappt das nicht.

        Ich vermute aber zu erraten, was dein Problem ist.

        Wenn du die erste Variante (query geht, aber die() liefert nichts) benutzt, dann ist das ein Kennzeichen dafür, dass dein Query von der Datenbank ordnungsgemäß akzeptiert wurde - und genau das willst du haben.

        Deine zweite Variante (die Anführungsstriche denke ich mir mal weg) schickt der Datenbank einen ungültigen Query, die Datenbank meckert, und die() wird aktiv.

        In beiden Fällen ist die() aber nicht geeignet, eine Meldung mit dem Sinngehalt "Access denied" auszuwerfen. Die korrekte Meldung im Programmablauf müßte lauten "Fehlerhafter SQL-Query an Datenbank gesendet - keine gültige Abfrage!", und mit mysql_error() sollte dann zu erfahren sein, was MySQL nicht paßt:
        or die("SQL-Query fehlerhaft: ".mysql_error());

        Wenn du Zugriffskontrollen machen willst, geht das anders. Wie, erkläre ich dir aber nicht - keiner weiß, wer du bist und was du möglicherweise schlimmes anstellst.

        Gruss
        Ano

        1. Hi,

          nun mal das Anonyme bei Seite....

          Wenn du Zugriffskontrollen machen willst, geht das anders. Wie, erkläre ich dir aber nicht - keiner weiß, wer du bist und was du möglicherweise schlimmes anstellst.

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

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

          Weiter Fehlermeldungen kann ich dir net geben da er mir keine ausgibt...

          Und keine Angst ich mach keine schlimmen sachen....

          Gruss

          Sven

          1. 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.
            1. Hallo Sven,

              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";

              Der Query?
              http://dict.leo.org/?query:

              query [comp.]    Die Abfrage (Datenbanken)

              Also bitte demnaechst 'die Query' ;)

              Gruesse,
               C'*scnr*'K