Unknown column Fehler beim INSERT von Buchstaben

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Unknown column Fehler beim INSERT von Buchstaben

    Hallo.
    Ich gebe mit POST den Inhalt der Eingabefelder eines Formulars an php weiter. Mit INSERT soll nun in eine Tabelle geschrieben werden.
    Wenn ich Zahlen in das Formular eingebe fügt er die Datensätze korrekt an.
    Bei Buchstaben gibt es die Fehlermeldung:

    Bei dem Versuch, den Datensatz einzufügen, ist ein Fehler aufgetreten:
    Fehler-Nummer: 1054
    Fehler-Ausgabe: Unknown column 'abcde' in 'field list'
    PHP-Code:
    $sql_create "CREATE TABLE test ("
    ."spalte1 VARCHAR(30), "
    ."spalte2 VARCHAR(30), "
    ."spalte3 VARCHAR(30), "
    ."spalte4 VARCHAR(30), "
    ."spalte5 VARCHAR(30), "
    ."memid INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY)"

    $z=1;
    for (
    $i=1$i <= 13$i++) {
    $sql_insert "INSERT INTO test VALUES (${"spalte1_".$z}${"spalte2_".$z}${"spalte3_".$z}${"spalte4_".$z}${"spalte5_".$z}$z)";
    $result mysql_query($sql_insert$db);
    $z++; } 
    Die Eingabefelder heißen spalte1_1 bis spalte1_13.
    Analog bis spalte5_1 bis spalte5_13.

    Kann mir jemand sagen, wo der Fehler liegt?
    Danke. Gruß Philipp
    Zuletzt geändert von ph.schmidt; 28.05.2003, 11:04.

  • #2
    Re: Unknown column Fehler beim INSERT von Buchstaben

    Original geschrieben von ph.schmidt
    Kann mir jemand sagen, wo der Fehler liegt?
    klar. buchstaben gehören in die gattung strings. also musst du diese auch als solche behandeln und ' verwenden.
    PHP-Code:
    $sql_insert "INSERT INTO test VALUES ('".${"spalte1_".$z}."', '".${"spalte2_".$z}."', '".${"spalte3_".$z}."', '".${"spalte4_".$z}."', '".${"spalte5_".$z}."', '".$z."')"
    auch lege ich DIR die verwendung von or die(mysql_error()) ans herz.
    PHP-Code:
    $result mysql_query($sql_insert$db) or die(mysql_error()); 
    INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


    Kommentar


    • #3
      danke chef.
      anstatt mysql_error() habe ich erstmal
      PHP-Code:
      $result mysql_query($sql_insert$db);
      if(
      $result) {
          echo 
      "Datensatz ist erfolgreich angefügt worden.\n<br>"; }
      else {
          echo 
      "Bei dem Versuch, den Datensatz einzufügen, ist ein Fehler
                aufgetreten: <br>\nFehler-Nummer:
                <b>"
      .mysql_errno($db)."</b><br>\nFehler-Ausgabe:
                <b>"
      .mysql_error($db)."</b>"; } 
      verwendet. Reicht erstmal auch.
      Später sollen die Ausgaben sowieso in eine log-Datei.

      Da in die letzte Spalte (memid) ja eine Zahl eingefügt werden soll, muß es doch
      PHP-Code:
      $sql_insert "INSERT INTO test VALUES ('".${"spalte1_".$z}."', '".${"spalte2_".$z}."', '".${"spalte3_".$z}."', '".${"spalte4_".$z}."', '".${"spalte5_".$z}."', $z)"
      heißen, oder?

      Kommentar


      • #4
        ja. ich wusst nur nicht, ob du auch buchstaben zulassen wolltest... mit ' geht es aber auch-

        aber ich würde dennoch den string auftrennen. das ist sauberer.
        PHP-Code:
        $sql_insert "INSERT INTO test VALUES ('".${"spalte1_".$z}."', '".${"spalte2_".$z}."', '".${"spalte3_".$z}."', '".${"spalte4_".$z}."', '".${"spalte5_".$z}."', ".$z.")"
        INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


        Kommentar


        • #5
          Sorry, deine letzte antwort verstehe ich irgendwie nicht.
          Es läuft zwar alles super, aber verstanden habe ich es nicht ganz.
          Außerdem, warum schreibst du
          PHP-Code:
          ('".${"spalte1_".$z}."'
          und nicht
          PHP-Code:
          ('${"spalte1_".$z}'
          ?
          Habe das Gefühl, als fehlt mir noch eine Kleinigkeit zum Verständnis.
          Wäre nett, wenn du mir das nochmal erläutern würdest.
          Danke.

          Kommentar


          • #6
            Original geschrieben von ph.schmidt
            Sorry, deine letzte antwort verstehe ich irgendwie nicht.
            Es läuft zwar alles super, aber verstanden habe ich es nicht ganz.
            Außerdem, warum schreibst du ... und nicht ...?
            Habe das Gefühl, als fehlt mir noch eine Kleinigkeit zum Verständnis.
            Wäre nett, wenn du mir das nochmal erläutern würdest.
            Danke.
            ein string beginnt hier mit " und endet mit ". logisch.

            und wenn du eine variable reinschreibst, schreibst du sie immer
            direkt in den string rein. ich beende den string mit " füge die variable
            mit . ein und lasse den string mit " fortsetzen. wo ist das problem?
            INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


            Kommentar


            • #7
              ok, jetzt hab ichs. Danke.
              Mach ich dann in Zukunft immer so. Ist ja sauberer.
              Stehe allerdings vor dem nächsten Problem:
              PHP-Code:
              for ($i=1$i <= 5$i++) {
              $sql_select "SELECT spalte".$i." FROM test";
              $result mysql_query($sql_select$db);
              if(
              $result) {
                  ${
              "spalte".$i."_row"} = mysql_fetch_row($result); }} 
              Das array wird dann in eine Tabelle geschrieben.
              PHP-Code:
              <?php echo $spalte1_row[0]; ?>
              Die erste Zeile mit Index [0] schreibt er noch.
              Danach kommt
              Undefined offset: 1
              Ergo, er liest <?php echo $spalte1_row[1]; ?> irgendwie nicht.
              Weiß du warum?

              Kommentar


              • #8
                Original geschrieben von ph.schmidt
                Weiß du warum?


                aber ich frage mich so langsam, wie dein code weiter aussehen soll und ob es nicht einfach ist, mal deine daten neu zu ordnen.

                so langsam habe ich das gefühlt dass du dich einem haufen spaggetthi-code näherst.
                INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                Kommentar


                • #9
                  schade
                  du dich einem haufen spaggetthi-code näherst
                  Nein. Niemals.
                  Soll ich mal meinen Code posten?
                  Ich finde ihn gut. Und gar nicht Nudel-mäßig.
                  >Daten neu orden< wie soll das gehen?
                  Ich habe halt 65 Formular-Felder zu bearbeiten.
                  Da muß ich es, meine ich, mit Variablen und for-Schleifen machen.
                  Wenigsten nehme ich ne Datenbank und mache es nicht über
                  fopen > fputs > fclose mit 65 *.txt Dateien.

                  Kommentar


                  • #10
                    es mag sein, dass der code sauber ist. die frage ist ja nur, was für daten du in der DB hast.
                    INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                    Kommentar


                    • #11
                      ich lösche sie ja immer wieder.
                      und mit mysql front überprüfe ich, ob auch alles sauber geschrieben wird.
                      mit meinem Problem bin ich nun aber immernoch nicht weiter.
                      hast du echt keine ahnung, oder eher wenig lust/motivation?

                      Kommentar


                      • #12
                        Original geschrieben von ph.schmidt
                        hast du echt keine ahnung, oder eher wenig lust/motivation?
                        das kann man jetzt auslegen wie mal will...
                        ich sage mal so. ich habe keine lust mich in einen code reinzuarbeiten, der nicht umbedingt optimal aufgebaut ist. damit schliesse ich die DB mit ein.

                        aber du kannst mal gerne den hintergrund verraten, was du genau machst. vielleicht verstehe ich dann deinen ansatz, oder evtl kann ich dir auch einen besseren ansatz geben. wer weiss. poste es mal detailiert.
                        INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                        Kommentar


                        • #13
                          Moin. Vatertag gut überstanden?
                          Also mal detailliert:
                          Ein Kunde möchte seine Preisliste und seine Saisonzeiten selber ändern.
                          13 Zeilen und 5 Spalten.
                          Beispiel:
                          Wintersaison | 02.11.03 | 21.12.03 | 25,- | 26,-
                          Ich habe also ein Formular gemacht mit 65 Textfeldern.
                          Die heißen spalte1_1 bis spalte5_13.
                          Die DB hat 5 Spalten spalte1 bis spalte5 und eine memid-Spalte.
                          Die Formular-Seite soll die Daten über eine for-Schleife aus der DB auslesen und in die Textfelder schreiben.
                          PHP-Code:
                          for ($i=1$i <= 5$i++) {
                          $sql_select "SELECT spalte".$i." FROM tilgert";
                          $result mysql_query($sql_select$db);
                          if(
                          $result) {
                              ${
                          "spalte".$i."_row"} = mysql_fetch_row($result); }} 
                          Dann in die Textfelder mit value="<?php echo $spalte1_row[0]; ?>"
                          Das Problem habe ich ja im vorletzen Post mal geschrieben, dass er das nicht macht. Nun sollte der Benutzer die Textfelder verändern und dann auf Submit drücken. Über POST werden dann die Variablen weitergegeben.
                          Die Variable geaendert wird true.
                          PHP-Code:
                          if (@$geaendert == true){
                          for (
                          $k=1$k <= 5$k++) {
                              for (
                          $i=1$i <= 13$i++) {
                                  
                          $sql_update "UPDATE tilgert SET spalte".$k."=$zeile".$k."_".$i" WHERE memid=".$i.";
                                  
                          $result = mysql_query($sql_update$db);
                          }}    } 
                          noch in Kommantaren, weil erstmal das Auslesen klappen sollte
                          Sooo. Das wars. Ich hoffe ich habe es verständlich und nachvollziehbar beschrieben. Philipp

                          Kommentar


                          • #14
                            also verstanden habe ich zwar einiges aber den sinn noch nicht so ganz ....

                            ich sehe aber auch, dass du deine daten in einer total sinnlosen weise speicherst. das geht besser...

                            schicke mir mal via email (button siehe unter meinem post) eine url, wo ich das live sehen kann. und schicke mir bitte einen downloadlink wo die php-dateien und die sql-daten + tabellen in einem zip enthalten sind.

                            wenn ich heute abend lust habe, schaue ich mir das mal an.
                            INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                            Kommentar


                            • #15
                              hmm.
                              das läuft ja bei mir bis jetzt nur im localhost.
                              ich kann dir also nur 2 *.php dateien schicken.
                              reicht dir das?

                              Kommentar

                              Lädt...
                              X