Bine: Fehler beim Auslesen der Daten aus MySQL

Hallo Ihr,

ich habe jetzt schon alles versucht und komme nicht auf meinen Fehler. In der Variablen $confirm_code wird ein 32-stelliger hash-code aus der Bestätigunsmail übergeben.

Jedoch kommt folgende Meldung und es wird nur ein 15-stelliger Code angezeigt:

You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near ''.newsletter_jugendfussball.' WHERE name LIKE '.f9e01c4b95bbc28

Hier der Code:

<?php
include("config.php");

$HTTP_GET_VARS["email"] = $email;
$HTTP_GET_VARS["confirm_code"] = $confirm_code;
//echo $email;
//echo $confirm_code;

$abfrage = "SELECT * FROM '.$db_table.' WHERE name LIKE '.$confirm_code.'";
$query = mysql_query($abfrage);
$result = mysql_fetch_array( $query) or die (mysql_error());
if (mysql_num_rows($query) > 0) ... u.s.w.

Vielleicht kann mir jemand helfen, da ich auch erst Anfänger bin...

Gruß Sabine

  1. Moin!

    $abfrage = "SELECT * FROM '.$db_table.' WHERE name LIKE '.$confirm_code.'";

    versuchs mal so:
    $abfrage = "SELECT * FROM ".$db_table." WHERE name LIKE ".$confirm_code."";

    tschüss ichen

    --
    Selfcode: sh:( fo:| br: n4:& ie:% mo:| mo:| de:] zu:) fl:| ss:| ls:[ js:|
  2. Hallo!

    You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near ''.newsletter_jugendfussball.' WHERE name LIKE '.f9e01c4b95bbc28

    MySQL kennt die Tabelle

    ''.newsletter_jugendfussball.'

    nicht, was auch nicht verwunderlich ist.

    Was sagt den?

    echo $abfrage

    Manchmal ist es ganz gut sich ein SQL-Statement anzuschauen, bevor man in in die DB jagt!

    MfG, André Laugks

    --
    L-Andre @ gmx.de
  3. Moin Bine,

    $abfrage = "SELECT * FROM '.$db_table.' WHERE name LIKE '.$confirm_code.'";

    Davon ausgehen, dass $db_table gefüllt ist, hast du falsch escaped:

    $abfrage = "SELECT * FROM '".$db_table."' WHERE name = '".$confirm_code."'";

    Like ist hier auch nicht angebracht, du möchstest ja genau diesen Code.

    Brauchst Du wirklich alle Felder aus dem Datensatz? Wenn nicht ist select * zu viel des Guten.

    Grüsse
    Mike

    --
    Freunde kommen und gehen. Feinde sammeln sich an.
    1. Hallo Ihr,

      vielen Dank für die schnelle Hilfe:

      Ich hebe alle Vorschläge versucht und es geht nicht.
      Bei der Lösung von Mike kommt folgende Meldung:

      "SELECT * FROM '".$db_table."' WHERE name = '".$confirm_code."'";

      Parse error: parse error, unexpected T_VARIABLE, expecting ',' or ';' in /mystite.de/confirm.php on line 13

      Bei dem Versuch die Variable auszugeben kommt nichts,
      da die Fehlermeldung kommt...

      Gruß Bine

      1. Hallo!

        Bei der Lösung von Mike kommt folgende Meldung:

        "SELECT * FROM '".$db_table."' WHERE name = '".$confirm_code."'";

        Parse error: parse error, unexpected T_VARIABLE, expecting ',' or ';' in /mystite.de/confirm.php on line 13

        Bei dem Versuch die Variable auszugeben kommt nichts,
        da die Fehlermeldung kommt...

        Dann must Du eben $abfrage ausgeben (echo $abfrage;) nachdem Du sie gebildet hast und bevor Du sie verwendest (query).

        Beste Grüße
        Viennamade

        1. Hi Viennamade,

          genau das hab ich ja...

          Gruß Bine

        2. Moin Bine

          Bei dem Versuch die Variable auszugeben kommt nichts,
          da die Fehlermeldung kommt...

          Mache es mal so:

          $abfrage = "SELECT * FROM '".$db_table."' WHERE name = '".$confirm_code."'";

          echo $abfrage;
          exit;

          und dann bitte die Zeile von $abfrage posten.

          Grüsse
          Mike

          --
          Freunde kommen und gehen. Feinde sammeln sich an.
          1. Hi Mike,

            das mit dem exit war der Knackpunkt zur Anzeige der Variablen!!!
            Super, der inhalt sieht folgendermaßen aus:

            SELECT * FROM 'newsletter_jugendfussball' WHERE name = 'f9e01c4b95bbc28a56708af250a986b7'

            sieht egentlich soweit i.O. aus oder?

            Gruß Bine

            1. Moin Bine,

              SELECT * FROM 'newsletter_jugendfussball' WHERE name = 'f9e01c4b95bbc28a56708af250a986b7'

              sieht egentlich soweit i.O. aus oder?

              Nee, er mag das nicht: 'newsletter_jugendfussball'

              Ersetze, mal das: '".$db_table."' durch  newsletter_jugendfussball

              Grüsse
              Mike

              --
              Freunde kommen und gehen. Feinde sammeln sich an.
              1. Hi Mike,

                dann kommt das:

                SELECT * FROM newsletter_jugendfussball WHERE name = 'f9e01c4b95bbc28a56708af250a986b7'

                Gruß Bine

                1. Hallo!

                  dann kommt das:

                  SELECT * FROM newsletter_jugendfussball WHERE name = 'f9e01c4b95bbc28a56708af250a986b7'

                  Und wenn Du das »exit;« wieder raus nimmst?

                  Beste Grüße
                  Viennamade

                2. Moin Bine,

                  SELECT * FROM newsletter_jugendfussball WHERE name = 'f9e01c4b95bbc28a56708af250a986b7'

                  und das sollte richtig sein, hast du das exit mal entfernt?
                  Wenn der Tabellen Name variable sein soll, dann darf es nicht heißen:

                  FROM '".$db_table."'
                  sondern
                  FROM $db_table

                  Grüsse
                  Mike

                  --
                  Freunde kommen und gehen. Feinde sammeln sich an.
                  1. Hallo Mike,

                    FROM '".$db_table."'
                    sondern
                    FROM $db_table

                    war der Fehler... Nachdem das exit wieder rausgenommen wurde kommt die Fehlermeldugn nicht mehr, es wird aber acu kein Datensatz ausgegeben... :o((

                    Naja mal sehen ich will Euch nicht länger mit den Anfängerproblemen von mir belasten...

                    Vielen Dank nochmal...

                    Gruß Bine

                    1. Moin Bine,

                      war der Fehler... Nachdem das exit wieder rausgenommen wurde kommt die Fehlermeldugn nicht mehr, es wird aber acu kein Datensatz ausgegeben... :o((

                      Naja mal sehen ich will Euch nicht länger mit den Anfängerproblemen von mir belasten...

                      Nö. lass uns weiter machen. Was für ein Ergebnis brauchst du aus deiner Tabelle? Eine Mail Addy? Einen Namen?
                      Zeige mal den Rest deiner Abfrage.

                      Grüsse
                      Mike

                      --
                      Freunde kommen und gehen. Feinde sammeln sich an.
                      1. Hi Mike,

                        gerne... ich sag dir kurz was ich will.

                        Jemand trägt sich in den Newsletter ein.
                        Als Anwortmail, bekommt er eine email mit einem Link
                        indem ich einen gebildeten Zufallshashwert mit email-adresse übergebe. Klickt er auf den link wird soll er in der confirm.php die Werte in der Datenbank und die Werte, die im link übergeben wurden vergleichen und wenn sie identisch sind eine aktion ausführen...
                        Das ist alles weiß nicht ob das so ok. ist aber ich denke mal am einfachsten um sich die Datenbank von irgendwelchen Spielern vollmüllen zu lassen. Was ich später noch machen will, anhand eines gestzen timestamps beim Eintrag + Zeit X alle daten die nicht bestätigt sind aus der Datenbank zu löschen...

                        Gruß Bine

                        1. Moin Bine,

                          Das ist alles weiß nicht ob das so ok. ist aber ich denke mal am einfachsten um sich die Datenbank von irgendwelchen Spielern vollmüllen zu lassen. Was ich später noch machen will, anhand eines gestzen timestamps beim Eintrag + Zeit X alle daten die nicht bestätigt sind aus der Datenbank zu löschen...

                          Kannst Du bitte mal die einzelnen Felder deiner Spalte posten:

                          Die Abfrage müßte die Übergebene ID (#Hash) verivizieren. Also, sollte deine Abrage gegen die DB sein. Ist die übergeben ID in meiner DB gespeichert? Richtig?

                          Grüsse
                          Mike

                          --
                          Freunde kommen und gehen. Feinde sammeln sich an.
                          1. Hi mike,

                            so sieht meine datenbank aus:

                            CREATE TABLE newsletter_jugendfussball (
                              id int(10) unsigned NOT NULL auto_increment,
                              email varchar(255) NOT NULL default '',
                              name varchar(255) NOT NULL default '',
                              confirm_code varchar(255) NOT NULL default '',
                              PRIMARY KEY  (id)
                            ) TYPE=MyISAM;

                            Gruß Bine

                            1. Moin Bine,

                              CREATE TABLE newsletter_jugendfussball (
                                id int(10) unsigned NOT NULL auto_increment,
                                email varchar(255) NOT NULL default '',
                                name varchar(255) NOT NULL default '',
                                confirm_code varchar(255) NOT NULL default '',
                                PRIMARY KEY  (id)
                              ) TYPE=MyISAM;

                              Um festzustellen ob die ID gespeichert ist kannst Du es so machen:

                              $abfrage="SELECT count(confirm_code) as valid FROM $db_table WHERE  name = '".$confirm_code."'";

                              $result = mysql_query($abfrage, $db_pointer); ( $db_pointer = deine Verbindung  Diese: $db_pointer = mysql_connect("localhost", "user", "passwort");)

                              $liste=mysql_fetch_array($result);
                              $count=$liste['valid'];

                              if ( $count == 0 )
                                  echo 'Nope';
                              else
                                  echo 'Yep';

                              Grüsse
                              Mike

                              --
                              Freunde kommen und gehen. Feinde sammeln sich an.
                              1. Hi Mike,

                                vielen dank für die hilfe, schnall es aber nict so richtig. :o(

                                <?php
                                include("config.php");

                                $HTTP_GET_VARS["email"] = $email;
                                $HTTP_GET_VARS["confirm_code"] = $confirm_code;
                                //echo $email;
                                //echo $confirm_code;

                                $abfrage="SELECT count(confirm_code) as valid FROM $db_table WHERE  name = '".$confirm_code."'";
                                $result = mysql_query($abfrage, $db_pointer);
                                #line 11#( $db_pointer = deine Verbindung  Diese: $db_pointer = mysql_connect("$db_server", "db_user", "db_name", "db_passwort");)$liste=mysql_fetch_array($result);
                                $count=$liste['valid'];

                                if ( $count == 0 )
                                    echo 'Nope';
                                else
                                    echo 'Yep';
                                ?>

                                fehlermeldung:

                                Parse error: parse error, unexpected T_STRING in /mysite.de/newsletter/confirm.php on line 11

                                1. Moin Bine,

                                  #» #line 11#( $db_pointer = deine Verbindung  Diese: $db_pointer =
                                  mysql_connect("$db_server", "db_user", "db_name", "db_passwort");)

                                  Das war alles nur Kommentar, dass darfst du natürlich nicht in das Statement bringen.

                                  Wie stellst du deine DB Verbindung her?

                                  Ungefähr so:? $db_pointer = mysql_connect("localhost", "user", "passwort");

                                  Grüsse
                                  Mike

                                  --
                                  Freunde kommen und gehen. Feinde sammeln sich an.
                                  1. Hi mike,

                                    ist ok. ich habe es auf mein Scirpt angepasst und ich bekommen ein
                                    ergebnis "Nope". Warum muß ich jetzt noch überprüfen...

                                    Vielen Dank für Deine Geduld und Hilfe, jetzt mal sehen wo der Fehler liegt...

                                    Gruß Bine

                                    1. Moin Bine,

                                      lasse dir folgendes ausgeben:

                                      $HTTP_GET_VARS["confirm_code"] = $confirm_code;

                                      das allerdings würde ich ersetzen durch:
                                      $confirm_code = $_GET['confirm_code'];

                                      echo confirme_code;
                                      exit;

                                      »» Hi mike,

                                      ist ok. ich habe es auf mein Scirpt angepasst und ich bekommen ein
                                      ergebnis "Nope". Warum muß ich jetzt noch überprüfen...

                                      Vielen Dank für Deine Geduld und Hilfe, jetzt mal sehen wo der Fehler liegt...

                                      Gruß Bine

                                      Grüsse
                                      Mike

                                      --
                                      Freunde kommen und gehen. Feinde sammeln sich an.
                                      1. Moin Bine,

                                        sorry ist schon spät, es muss heissen:
                                        echo $confirm_code;
                                        exit;

                                        Grüsse
                                        Mike

                                        --
                                        Freunde kommen und gehen. Feinde sammeln sich an.
                                        1. Moin Bine,

                                          sollte dir heute von den Forumsleuten nicht mehr geholfen werden, dann habe ich morgen mehr Zeit. Für heute musss ich passen. Nur für Heute :-))

                                          Grüsse
                                          Mike

                                          --
                                          Freunde kommen und gehen. Feinde sammeln sich an.
                                          1. alles klar mike,

                                            trotzdem vielen dank. Kannst mir ja kurz noch deine mail-adresse geben, falls ich noch fragen hierzu hätte...

                                            Gruß Bine

                                      2. Hi Mike,

                                        ich habe jetzt die $_get abgeändert.
                                        Ist es nicht so, falls deer Code übereinstimmt bekommen wir als ergebnis eine "0"?

                                        Gruß bine

                                        1. Moin Bine,

                                          ich habe jetzt die $_get abgeändert.
                                          Ist es nicht so, falls deer Code übereinstimmt bekommen wir als ergebnis eine "0"?

                                          Nun wieder frisch und munter. Als Ergbnis muss die Anzahl der Übereinstimmungen kommen. Also mindestens 1. Bei nichts gefunden 0

                                          Nun habe ich gesehen das die Abfrage auf das Feld "name" gemacht wird, steht dein Code? Steht er nicht in "confirm_code"? Wenn ja, dann ändere das Select Statement.

                                          $abfrage="SELECT count(confirm_code) as valid FROM $db_table WHERE  confirm_code = '".$confirm_code."'";

                                          $result = mysql_query($abfrage, $db_pointer);

                                          $liste=mysql_fetch_array($result);
                                          $count=$liste['valid'];

                                          if ( $count == 0 )
                                              echo 'Nope';
                                          else
                                              echo 'Yep';

                                          Grüsse
                                          Mike

                                          --
                                          Freunde kommen und gehen. Feinde sammeln sich an.