In DB schreiben

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

  • In DB schreiben

    Hallo zusammen...
    Ich bin noch am PHP lernen und habe eine frage:
    Was ist am diesem code falsch? Das 'OK' beim echo kommt zwar aber es schreibt nicht in die DB!!


    PHP-Code:
    <html>
    <head>
    <title>Registrierung</title>
    <?php
    /**
    ######################################
    #    MySQL Regiestrierungsformular   #
    #           by :.and.y.:             #
    ######################################
    **/
    $user "Pascal";
    $pw "Pascal";
    $id 134023;
    $gb "1992-12-12";
    $email "Jetzt@habbo-fussball.ch.vu";


    $sql 'insert users values '
            
    ' ( '
            
    ' \'$user\','
            
    ' \'$pw\','
            
    ' \'$id\','
            
    ' \'$gb\','
            
    ' \'$email\''
            
    ' );';

    //Verbindung herstellen
    $server "localhost";
    $dbuser "user";
    $dbpw   "passwort";
    $db = @mysql_connect($server$dbuser$dbpw);
    if (
    $db == false)
    {
        echo 
    "Es ist ein Fehler aufgetreten!<br>";
        echo 
    mysql_error();
    }
    else
    {    
        
    mysql_db_query("users"$sql);
        echo 
    "OK";
    }
    mysql_close($db);
    ?>
    </head>
    <body>

    </body>
    </html>
    Bücher für Programmierer

  • #2
    Re: In DB schreiben

    Original geschrieben von andygyr
    Hallo zusammen...
    Ich bin noch am PHP lernen und habe eine frage:
    Was ist am diesem code falsch? Das 'OK' beim echo kommt zwar aber es schreibt nicht in die DB!!


    PHP-Code:

    $sql 
    'insert [B]into[/B] users values '
            
    ' ( '
            
    ' \'$user\','
            
    ' \'$pw\','
            
    ' \'$id\','
            
    ' \'$gb\','
            
    ' \'$email\''
            
    ' );';

    ?> 
    vieleicht gehts ja so

    Vieleicht ist das auch ganz nützlich

    http://de.php.net/mysql_error


    Ich würde es vieleicht so machen

    feld1-feld5 = deine felder in der DB

    bei strings sieht das dann so aus '$wert' und bei integern z.B so $wert (würd ich vorher allesdings prüfen sonst funktionniert es wieder nicht )

    PHP-Code:

    $sql 
    "INSERT INTO users (feld1,feld2,feld3,feld4,feld5) 
    VALUES ('
    $user','$pw','$id','$gb','$email')"
    Zuletzt geändert von Sebastian.J; 20.01.2007, 14:36.

    Kommentar


    • #3
      nichts... :S

      Den $sql code habe ich einfach von phpmyadmin generieren lassen...
      und bei mir kam er so raus: also mit \ dazwischen...


      $sql = 'insert users values '
      . ' ( '
      . ' \'$user\','
      . ' \'$pw\','
      . ' \'$id\','
      . ' \'$gb\','
      . ' \'$email\''
      . ' );';

      Ps:
      bei $id...
      ist dort das: $id = zahl;
      oder das: $id = "zahl"; richtig?
      Bücher für Programmierer

      Kommentar


      • #4
        Original geschrieben von andygyr
        nichts... :S

        Den $sql code habe ich einfach von phpmyadmin generieren lassen...
        und bei mir kam er so raus: also mit \ dazwischen...


        $sql = 'insert users values '
        . ' ( '
        . ' \'$user\','
        . ' \'$pw\','
        . ' \'$id\','
        . ' \'$gb\','
        . ' \'$email\''
        . ' );';

        Ps:
        bei $id...
        ist dort das: $id = zahl;
        oder das: $id = "zahl"; richtig?
        http://de.php.net/mysql_error

        Kommentar


        • #5
          hmm... ich check nichts mehr...
          Es kommt ja kein mysql error, wiso gobst du mir ein link dazu?
          Bücher für Programmierer

          Kommentar


          • #6
            Zuerst mal solltest du dich über Stringverkettung in PHP informieren.

            'blabla'.$var <- mit Punkt dazwischen!

            Dann lass dir die erzeugte Query mal ausgeben, also

            $sql = 'insert ...
            echo $sql;

            Vermutlich bekommst du das hier zu sehen, wenn register_globals = off ist (was so sein sollte!):

            insert users values ( , , , , );

            Kommentar


            • #7
              Danke,
              Ich habs jetzt nicht mehr mit string gemacht.
              PHP-Code:
              <html>
              <head>
              <title>Registrierung</title>
              <?php
              /**
              ######################################
              #    MySQL Regiestrierungsformular   #
              #           by :.and.y.:             #
              ######################################
              **/
              $user "Pascal";
              $pw "Pascal";
              $id 134023;
              $gb "1992-12-12";
              $email "Jetzt@habbo-fussball.ch.vu";

              $sql "INSERT INTO users (user,pw,id,gbdatum,email) 
              VALUES ('
              $user','$pw','$id','$gb','$email')";


              //Verbindung herstellen
              $server "localhost";
              $dbuser "user";
              $dbpw   "pw";
              $db = @mysql_connect($server$dbuser$dbpw);
              if (
              $db == false)
              {
                  echo 
              "Es ist ein Fehler aufgetreten!<br>";
                  echo 
              mysql_error();
              }
              else
              {    
                  
              mysql_db_query("users"$sql);
                  echo 
              "$sql";
              }
              mysql_close($db);
              ?>
              </head>
              <body>

              </body>
              </html>
              resultat:
              Code:
              INSERT INTO users (user,pw,id,gbdatum,email) VALUES ('Pascal','Pascal','134023','1992-12-12','Jetzt@habbo-fussball.ch.vu')
              Das sollte so ja stimmen, in der Datenbank jedoch hat es immer noch keinen eintrag!
              Bücher für Programmierer

              Kommentar


              • #8
                mysql_db_query() ist deprecated, machs lieber so:

                mysql_select_db('users') or die(mysql_error());
                mysql_query($sql) or die(mysql_error());


                echo "$sql" ist Unsinn, Variablen kann man einfach so ausgeben:

                echo $sql;


                Und wer Fehler sucht, sollte sie nicht mit @ unterdrücken! Außerdem wäre error_reporting(E_ALL); am Beginn des Scripts zu empfehlen.
                Steht alles auch in unseren Regeln.

                Zuletzt noch ein Wort zu deinem Datenbankdesign: Die Spalte id ist doch vom Typ int, warum willst du dann einen String reinschreiben? Und wieso mußt du die ID vorher selbst bestimmen? Ist die Spalte nicht auto_increment?
                Zuletzt geändert von onemorenerd; 20.01.2007, 15:36.

                Kommentar


                • #9
                  Ich arbeite mit einem php Buch... und da möchte ich eigendlich nicht einfach sachen überspringen, sodass ich nachher nicht mehr draus komme!

                  Code:
                  Access denied for user 'andygyr'@'localhost' to database 'users'
                  hmm... ???

                  EDIT:

                  Zu deinem edit:
                  wie ober bereits gesagt ist das auto_... noch nicht in meinem lernstoff vorgekommen!

                  Bücher für Programmierer

                  Kommentar


                  • #10
                    Das Buch ist Dreck! Es hat dir zuerst mal beigebracht, wie man mit @ Fehlermeldungen unterdrücken kann, aber nicht wie man sie sich gezielt anzeigen lassen kann (nämlich mit mysql_error()). Außerdem wird im Buch mysql_db_query() verwendet - wahrscheinlich ist der Schinken ziemlich alt.

                    Eben dieses mysql_db_query() schlug fehl und nun schlägt mysql_select_db() fehl, denn der Benutzer andygyr hat nicht das Recht mit der Datenbank users zu arbeiten. Ändere das, dann klappts auch. Stichwort GRANT.
                    Bleib aber bei mysql_select_db() und mögliche Fehler immer schön mit mysql_error() anzeigen lassen ...

                    Kommentar


                    • #11
                      Ja, das Buch ist noch von PHP4, ich habe zwar auch ein PHP5 Buch, welches aber nicht so gut geeignet für Anfänger ist. Trotzdem Danke, ich werde von jetzt an versuchen die Code's in PHP5 zu erstellen.

                      Was ich jetzt allerdings ändern muss weis ich auch nicht!
                      Wie meinst du das, ich habe keinen zugriff zu 'users' ??? wie kann ich das ändern?
                      Bücher für Programmierer

                      Kommentar


                      • #12
                        Du mußt deinem MySQL-Server sagen, dass der Benuter andygyr auf die Tabelle users zugreifen darf.
                        Das wird in deinem Buch wahrscheinlich nicht behandelt, denn es gehört nicht zu PHP sondern zu MySQL. Falls du dazu kein Buch hast, lies online nach (http://dev.mysql.com/GRANT) oder nutze phpMyAdmin.

                        Kommentar


                        • #13
                          Ich kann leider kein Englisch und bei phpmyadmin habe ich auch nichts gefunden.
                          Kannst du mir das vieleicht erklären?
                          Bücher für Programmierer

                          Kommentar


                          • #14
                            Oben verlinkte Seite gibt es auch auf Deutsch.

                            Bei phpMyAdmin ist gleich auf der Startseite im rechten Bereich ein Link "Rechte", da draufgeklickt siehst du eine Übersicht aller Benutzer.

                            Entweder gibt es andygyr schon, dann kannst du in der Tabelle rechts das Icon in der richtigen Zeile klicken. Oder es gibt den Benutzer noch nicht, dann klickst du unterhalb der Tabelle auf "neuen Benutzer hinzufügen", füllst nur den Bereich Logininformationen aus und klickst OK.

                            Nun bist du auf der Seite, wo man die Rechte für diesen Benutzer einstellen kann. Global Rechte braucht er nicht. Du wählst aus dem Dropdown unter Datenbankspezifische Rechte die DB users aus, im Bereich Rechte ändern klickst du auf alle auswählen und dann OK.

                            Das wars. Aber mal ehrlich, das hätte man auch allein rausfinden können!
                            Deine Unselbstständigkeit ist für mich Grund genug, nicht wirklich etwas zu erklären. Du weißt jetzt wie es geht und wenn du auch wissen möchtest warum und was überhaupt, dann mach dich mal auf zu Google ...
                            Zuletzt geändert von onemorenerd; 21.01.2007, 12:01.

                            Kommentar


                            • #15
                              Original geschrieben von andygyr
                              Ich kann leider kein Englisch
                              hier sollst du schleunigst nachholen; ein Software-Entwickler ohne Englischkenntnisse gibt es nicht , denn man ist meist auf englische Literatur angewiesen.

                              Kommentar

                              Lädt...
                              X