[Funktion] Frage zu Insert into

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

  • [Funktion] Frage zu Insert into

    Hi,

    möchte gerne ein weiteres Feld einbauen

    PHP-Code:
    $sql "INSERT into $mysql_users_table values(NULL, '$HTTP_POST_VARS[first]', '$HTTP_POST_VARS[last]', '$HTTP_POST_VARS[user]', '$HTTP_POST_VARS[email]', NULL, '$password', '$HTTP_POST_VARS[office]', '$HTTP_POST_VARS[phone]', 0, 0, 0,'default', NULL, NULL, NULL, 0, '$default_language', 0)"
    das Feld müsste dann so heissen: $HTTP_POST_VARS[pcname] und hinzugefügt werden.

    Wenn ich dies tue

    PHP-Code:
            $sql "INSERT into $mysql_users_table values(NULL, '$HTTP_POST_VARS[first]', '$HTTP_POST_VARS[last]', '$HTTP_POST_VARS[user]', '$HTTP_POST_VARS[email]', NULL, '$password', '$HTTP_POST_VARS[office]', '$HTTP_POST_VARS[phone]', '$HTTP_POST_VARS[pcname]' 0, 0, 0,'default', NULL, NULL, NULL, 0, '$default_language', 0)"
    erhalte ich eine Fehlermeldung (You have an error in your SQL syntax). Habe nun herausgefunden, das ich am Ende noch die Werte einfügen muss, weis aber leider nicht wie....

    Für was steht eigentlich NULL, default?

    Ciao

  • #2
    mach mal statt values()

    set wert = 'wert', wert2 = 'wert2'

    dann siehst du besser ob dir was fehlt
    Zuletzt geändert von MaxP0W3R; 13.07.2004, 14:54.


    An mich bitte keine unaufgeforderten E-Mails senden (ausser ihr seid bereit geld zu zahlen, dann gerne )

    Kommentar


    • #3
      Hi,

      könntest du mir das mal so zurecht formatieren, wie du es meinst, bin Anfänger und versuche greade zu folgen...

      Warum steht eigentlich NULL hier zweimal?
      PHP-Code:
      values(NULL'$HTTP_POST_VARS[first]''$HTTP_POST_VARS[last]''$HTTP_POST_VARS[user]''$HTTP_POST_VARS[email]'NULL'$password''$HTT 
      Ciao

      PS: Hier ist das ganze Script

      PHP-Code:
      <?php

      require_once "common/style.php";

      if(isset(
      $register)){

          if(
      $HTTP_POST_VARS[user] == ''){
              
      printerror("$lang_usernotblank");
              exit;
          }

          
      //check username first
          
      $sql "SELECT user_name from $mysql_users_table where user_name='$user'";
          
      $result $db->query($sql);
          
      $numrows $db->num_rows($result);

          if(
      $numrows 0){
              
      printerror($lang_usernametaken);
              exit;
          }

          
      //check passwords
          
      if($HTTP_POST_VARS[password] != $HTTP_POST_VARS[password2]){
              
      printerror($lang_passwordsnotmatch);
              exit;
          }
          else{
              
      $password md5($HTTP_POST_VARS[password]);
          }

          
      //create user account, but do not activate it.
              
      $sql "INSERT into $mysql_users_table values(NULL, '$HTTP_POST_VARS[first]', '$HTTP_POST_VARS[last]', '$HTTP_POST_VARS[user]', '$HTTP_POST_VARS[email]', NULL, '$password', '$HTTP_POST_VARS[office]', '$HTTP_POST_VARS[phone]', '$HTTP_POST_VARS[pcname]' 0, 0, 0,'default', NULL, NULL, NULL, 0, NULL, '$default_language', 0)";
          
      $db->query($sql);
          
      $uid $db->insert_id();

          
      //send notification to admin for approval
          
      $sql "SELECT template from $mysql_templates_table where name='email_new_user'";
          
      $result $db->query($sql);
          
      $template $db->fetch_array($result);
          
      $template=str_replace("\\'","'",$template[0]);
          eval(
      "\$email_msg = \"$template\";");

          if(
      $enable_smtp == 'lin'){
              
      sendmail($admin_email$helpdesk_name$HTTP_POST_VARS[email], $uid$email_msg);
          }
          if(
      $enable_smtp == 'win'){
              
      mail($admin_email"$lang_registerforaccount"$email_msg"From: ".$helpdesk_name ."<".$HTTP_POST_VARS[email].">\nReply-To: ".$HTTP_POST_VARS[email]."\n");
          }
          
      //no other options...if enable_smtp is set to anything else, the email will not get sent.
          
          //print out the message so the user knows he/she is awaiting approval
          
      echo "$lang_messagetoadmin<br>";
          exit;
      }

      echo 
      "<form method=post>";

      startTable("$lang_register""left"801);
          echo 
      "<tr><td class=back><br>";


              
      startTable("$lang_register - $lang_required""left"802);
                  echo 
      "<tr><td width=27% class=back2>$lang_username: </td>
                      <td class=back> <input type=text size=30 name=user></td></tr>\n"
      ;
                  echo 
      "<tr><td width=27% class=back2>$lang_firstname: </td>
                      <td class=back> <input type=text size=30 name=first></td></tr>\n"
      ;
                  echo 
      "<tr><td width=27% class=back2>$lang_lastname: </td>
                      <td class=back><input type=text size=30 name=last></td></tr>\n"
      ;
                  echo 
      "<tr><td width=27% class=back2>$lang_emailaddy: </td>
                      <td class=back><input type=text size=30 name=email></td></tr>\n"
      ;
                  echo 
      "<tr><td width=27% class=back2>$lang_password: </td>
                      <td class=back> <input type=password size=30 name=password></td></tr>\n"
      ;
                  echo 
      "<tr><td width=27% class=back2>$lang_password $lang_again: </td>
                      <td class=back> <input type=password size=30 name=password2></td></tr>\n"
      ;
                  echo 
      "<tr><td class=back2 align=left width=27%> $lang_office: </td>
                      <td class=back><input type=text size=30 name=office></td></tr>"
      ;
                  echo 
      "<tr><td class=back2 align=left width=27%> $lang_phoneext: </td>
                      <td class=back><input type=text size=30 name=phone></td></tr>"
      ;
                  echo 
      "<tr><td class=back2 align=left width=27%> $lang_pcname: </td>
                      <td class=back><input type=text size=30 name=pcname></td></tr>"
      ;
              
      endTable();

          echo 
      "<div align=\"center\"><input type=submit name=register value='$lang_register'></div>";
          echo 
      "</form>";
          echo 
      "</td></tr>";

      endTable();



      ?>

      Kommentar


      • #4
        Mhn, lass doch einfach mal alle Werte weg (liste sie schlichtweg nicht auf), die du nicht brauchst..

        Schau doch einfach mal ins MySQL Manual, wie man den SQL Query umformatiert, um SET anstatt von VALUES zu benutzen..
        PHP Handbuch - MySQL Handbuch - PHP Einsteiger Tutorial - CSS Referenz - Browserunterstützung von CSS

        Kommentar


        • #5
          Du solltest die erstmal deine Tabelle anschauen. Wenn du in eine Tabelle mehr Felder einfügen willst als vorhanden sind, kriegst du halt nen Fehler. Wenn Du mehr unterbringen willst, musst du zunächst deine Tabelle verändern.

          Die NULL-Werte bedeuten NULL. Öhmm.. ich glaube das hilft dir jetzt auch nicht. Ok, ein Feld in der DB kann einen Wert enthalten, z.B. "Toller Text" bei einem VARCHAR oder 1 bei einem int. Du kannst jetzt im VARCHAR-Feld auch einen leeren Text ("") speichern. Dann steht da eben ein leerer String drin. Im Int-Feld wäre das vielleicht die 0 (nicht NULL).
          Was ist aber wenn du nicht mal einen leeren String (oder nicht mal eine 0) speichern willst? Dann brauchst du NULL. Das heißt, dass das Feld nicht belegt ist, also ganz, ganz leer.

          Merke 0 <> NULL <> ""

          Alle Klarheiten beseitigt?
          Ich denke, also bin ich.
          Manche sind trotzdem!

          Kommentar


          • #6
            Hi,

            in der Tabelle gibt es Feld "pcname". Das ist also kein Problem, das auslesen des Feldes funktioniert auch, nur das eintragen nicht.

            Ich muss also nur am Ende das Feld füllen, weis aber nicht wie, das ist mein Problem.

            Was ich auch nicht verstehe ist, warum nach Values die NULL kommt ist doch garkein Feld!?

            PHP-Code:
            "values(NULL," 
            irgendwi geht das ganz doch nicht auf?



            Gruß
            Zuletzt geändert von cookiestar; 13.07.2004, 15:20.

            Kommentar


            • #7
              Ach noch was, wie schaffe ich es nach erfolgreichem Regsitrieren, das er auf eine vorgegebene Seiter weitergeleitet wird...

              Gruß

              Kommentar


              • #8
                header()
                [color=red]Geht nicht[/color] ist keine Fehlermeldung

                Kommentar


                • #9
                  Hi,

                  danke für die Antwort

                  Bleibt nur noch meine obige Frage offen.....

                  values(NULL, '

                  Kommentar


                  • #10
                    PHP-Code:
                    $sql "INSERT into $mysql_users_table values(NULL, '$HTTP_POST_VARS[first]', '$HTTP_POST_VARS[last]', '$HTTP_POST_VARS[user]', '$HTTP_POST_VARS[email]', NULL, '$password', '$HTTP_POST_VARS[office]', '$HTTP_POST_VARS[phone]', '$HTTP_POST_VARS[pcname]' 0, 0, 0,'default', NULL, NULL, NULL, 0, '$default_language', 0)"
                    Hinter '$HTTP_POST_VARS[pcname]' fehlt doch nur ein Komma, do daß die Einträge nicht getrennt werden können. Das dürfte der syntax-error sein. Oder etwa doch nicht?

                    Kommentar


                    • #11
                      uff, ich vermute mal dass das erste feld in deiner benutzertabelle eine benutzer id darstellt, mit autoincrement ..
                      angenommen du sagst ihm immer er soll 123 als id verwenden und einfügen, wird er schimpfen (was soll eine id bringen die nicht einmalig ist .. ?)
                      gibst du ihm NULL als 'wert' gibst, ist mysql gezwungen selbst was passendes rauszusuchen (NULL darf ja nicht) ..
                      mysql nimmt also die letzte id, erhöht sie um eins (auto-increment) und speichert diese ..

                      frage beantwortet ? ich hoffe doch ..
                      (ps: du könntest genausogut 'default' (ohne anführungszeichen) verwenden
                      mfg,
                      [color=#0080c0]Coragon[/color]

                      Kommentar


                      • #12
                        Hi

                        danke an euch... Jetzt habe ich es kapiert mit NULL!! DANKE!

                        Und das mit dem vergessenen "," werde ich gleich morgen ausprobieren...

                        Ciao

                        Kommentar


                        • #13
                          Hi,

                          bekomme nun eine andere Fehlermeldung:

                          Column count doesn't match value count at row 1

                          Also irgendwas stimmt mit den "Feldfüllungen" nicht.

                          Findet ihr den Fehler ?

                          PHP-Code:
                                  $sql "INSERT into $mysql_users_table values('$HTTP_POST_VARS[first]', '$HTTP_POST_VARS[last]', '$HTTP_POST_VARS[user]', '$HTTP_POST_VARS[email]', NULL, '$password', '$HTTP_POST_VARS[office]', '$HTTP_POST_VARS[phone]', '$HTTP_POST_VARS[pcname]', 0, 0, 0,'default', NULL, NULL, NULL, NULL, '$default_language', 0)"
                          Was mir vielleicht einfacher fällt es zu kapieren, wenn jemand mal die BEzüge klar macht sprich

                          Feld: $HTTP_POST_VARS[first]
                          Eintrag: 0

                          usw. .....

                          Ciao
                          Zuletzt geändert von cookiestar; 14.07.2004, 08:09.

                          Kommentar


                          • #14
                            Column count doesn't match value count at row 1
                            Das bedetutet, daß die Anzahl der einzutragenden Werte nicht mit der Anzahl der vorhandenen Felder übereinstimmt.

                            Es sollen 19 Einträge in diese Tabelle gemacht werden, aber die Anzahl der vorhandenen Felder scheint nicht damit übereinzustimmen. Check das mal.
                            Zuletzt geändert von Emanon; 14.07.2004, 09:04.

                            Kommentar


                            • #15
                              Hi,

                              das habe ich auch bereits herausgefunden, nur leider finde ich den Fehle rin dem Code nicht

                              Kann mir jemand die obige Frage beantworten, um mir das genauer zu erklären...

                              Ciao & THX!

                              Kommentar

                              Lädt...
                              X