Philipp Walter: Fehler in der Select Anweisung!?

$anfrage="SELECT * FROM login WHERE admin LIKE '$benutzer'";

Kann mir jemand helfen welchen Fehler ich hier bei der Select Anweisung habe.

Ich komme mit den Kommatas noch nicht so zurecht.
Danke im Voraus.

  1. Versuch doch mal
    $anfrage="SELECT * FROM login WHERE admin LIKE '".$benutzer."'";

    (ferner ist die korrekte Mehrzahl von Komma "Kommata" =))

    1. Versuch doch mal
      $anfrage="SELECT * FROM login WHERE admin LIKE '".$benutzer."'";

      (ferner ist die korrekte Mehrzahl von Komma "Kommata" =))

      Übrigens scheint es mit hier um ein Login-Script zu gehen. Ich würde dann doch eher

      $anfrage="SELECT * FROM login WHERE admin = '".$benutzer."';";

      vorschlagen..

      1. Versuch doch mal
        $anfrage="SELECT * FROM login WHERE admin LIKE '".$benutzer."'";

        (ferner ist die korrekte Mehrzahl von Komma "Kommata" =))

        Übrigens scheint es mit hier um ein Login-Script zu gehen. Ich würde dann doch eher

        $anfrage="SELECT * FROM login WHERE admin = '".$benutzer."';";

        vorschlagen..

        Vielen Dank für die Hilfe aber mein SCript funktioniert noch immer nicht.

        1. Hallo!

          Vielen Dank für die Hilfe aber mein SCript funktioniert noch immer nicht.

          Versuch doch mal
          $anfrage="SELECT * FROM login WHERE admin LIKE '".$benutzer."'";

          ^         ^
          Vielleicht, weil links und rechts der markierten Zeichen jeweils ein Abstand (space) fehlt?

          Beste Grüße
          Viennamade

          1. use Mosche;

            Vielen Dank für die Hilfe aber mein SCript funktioniert noch immer nicht.

            Versuch doch mal
            $anfrage="SELECT * FROM login WHERE admin LIKE '".$benutzer."'";
                   ^         ^
            Vielleicht, weil links und rechts der markierten Zeichen jeweils ein Abstand (space) fehlt?

            In Perl brauchen an diese Stellen keine Leerzeichen, und auch ansonsten sehe ich keinen Ort, wo die hinmüssen.

            Zum Ausdruck:

            1. $benutzer
              Man sollte darauf achten, dass $benutzer schin frühzeitig richtig (d.h., am besten von der DB selber) "gequotet" wird. Stell dir vor, in $benutzer steht was wie:
              matti'; DROP TABLE 'login

            Dann bist du deine Tabelle ganz schnell los. In Perl davor einfach:
            $benutzer = $dbh->quote($benutzer) einsetzen (wenn $dbh dein Datenbank-Handle beschreibt), dann müsstest du diese Sorge los sein. Dann kannst du auch die Single-Quotes um $benutzer weglassen (werden von quote gesetzt). In anderen Programmiersprachen müsste es entsprechendes geben (einfach mal nach quote bzw. escape suchen.

            1. Der Ausdruck:
              SELECT * FROM login WHERE admin LIKE $benutzer
              sollte richtig sein (wenn du $benutzer richtig gequotet hast (siehe 1)). Denke aber daran, dass du vielleicht gar kein LIKE benutzen willst, zB wenn du ein Login-Script hast, wo du auf Gleichheit überprüfen willst. Bist du ausserdem sicher, dass in $benutzer auch ein Platzhalterzeichen steht (m.W. z.B. % bei PostgreSQL)? Ansonsten schreibe als SQL-Ausdruch:
              SELECT * from login WHERE admin = $benutzer;

            2. Ich kenne deinen Tabellen-aufbau nicht, aber dass ganze sieht mir nach eine Login-Tabelle aus. Hat diese Tatsächlich ein Attribut (Spalte) 'admin'? Poste doch mal, welche Attribute deine Relation hat.

            3. Poste mal die Fehlermeldungen.
              use Tschoe qw(Matti);

            --
            neues Selftreffen?
            http://selfcommunity.teamone.de/foren/community/?t=2241&m=2687
              Anyone who quotes me in their sig is an idiot. -- Rusty Russell.
        2. Was sagt denn MySQL dazu?
          ( echo mysql_error()."<br />\n"; )

        3. Hallo,

          Vielen Dank für die Hilfe aber mein SCript funktioniert noch immer nicht.

          Ohne einer genauen Fehlerbeschreibung kann Dir sicher nicht geholfen werden. Dazu gibt es zu viele Möglichkeiten, warum die Abfrage nicht ausgeführt wird. Vielleicht funktioniert sich auch, und Dein Fehler liegt irgendwo in der umgebendende Logik ($benutzer ist falsch oder gar nicht gesetzt, Deine Auswertung des Ergebnisses ist fehlerhaft, es existiert kein Datensatz auf den die Abfragebedingungen zutrifft usw.).
          Sicher ist nur ein: 'funktioniert nicht' funktioniert nicht;-)

          Also setz Dich hin, ergänze Dein  Script um Debug-Ausgaben, un vor allem: lasse Dir allfällige Fehlercodes und -meldungen anzeigen. Analysiere diese Ausgaben und wenn Du dann nicht den Fehler gefunden hast, dann melde Dich wieder.

          Grüße
            Klaus

  2. $anfrage="SELECT * FROM login WHERE admin LIKE '$benutzer'";

    Programmierst du in Perl? solltest du evtl. Sonderzeichen schützen???

  3. Hallo,

    $anfrage="SELECT * FROM login WHERE admin LIKE '$benutzer'";

    Ich komme mit den Kommatas noch nicht so zurecht.

    Ich komme mit den Kommatas auch noch nicht zurecht, aber es gab in letzter Zeit mindestens einen erschöpfenden Thread der es uns beiden Wert sein sollte ihn nachzulesen :-)

    WHERE s.Kuerzel='DE' AND p.osname='" . substr(strrchr($_SERVER['PHP_SELF'],"/"),0) . "';";

    Hier eine Syntax aus einer meiner Seiten ... funktioniert jedenfalls ... also nach p.osname das ' um den Stringoperanden einzuleiten, dann mit " den SQL-String unterbrechen, dann die Variable, dann wieder mit " den SQL-String beginnen und ...

    Beste Grüße
    Viennamade

  4. hi,

    $anfrage="SELECT * FROM login WHERE admin LIKE '$benutzer'";

    Kann mir jemand helfen welchen Fehler ich hier bei der Select Anweisung habe.

    Ich komme mit den Kommatas noch nicht so zurecht.

    Hmm. Meinst du vielleicht mit den quoten ? Isses PERL-DBI ?

    Tipp: Statement-Handler vor-preparieren mit Platzhalter '?' like

    my $sth_select = $dbh->prepare("SELECT * FROM table WHERE id=?");

    später....

    $sth_select->execute($fragezeichen); # ?,? -> $x,$y; 2or_more

    oder mal eine andere Verwendung von Platzhalter '?'

    $dbh->do("INSERT INTO content VALUES(?,?,?,?,?)", undef, $idx, $id, $subject, $time, $body );

    $dbh steht für DataBaseHandler.

    Platzhalter vereinfachen das Scripten, machen weniger Probleme mit der Quoterei und prepares bringen Vorteile wenn Statements mehrfach im Script verwendet werden.

    Gruss, Rolf

    --
    SELFforum - Das Tor zur Welt!
    Theoretiker: Wie kommt das Kupfer in die Leitung?
    Praktiker: Wie kommt der Strom in die Leitung?