Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Problem bei INSERTEN INTO

Einklappen

Neue Werbung 2019

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

  • [Erledigt] Problem bei INSERTEN INTO

    Hi,

    ich hab mich jetzt nach stunden langem versuchen dazu entschlossen mein Problem mit jemandem zu teilen!
    Folgendes haut also nicht hin:
    PHP-Code:
    $row 1
    $handle fopen("ad2.csv""r"); 
    while ((
    $data fgetcsv($handle10000",")) !== FALSE) { 
        
    $num count($data); 
        
    $row++; 
        for (
    $c=0$c $num$c++) { 
        
    $na $c
        if (
    $na == ){ 
        
    $ma "geschlecht"
        } 
        if (
    $na == ){ 
        
    $ma "vorname"
        } 
        if (
    $na == ){ 
        
    $ma "nachname"
        } 
        if (
    $na == ){ 
        
    $ma "Straßenname"
        } 
        if (
    $na == ){ 
        
    $ma "Postleitzahl"
        } 
        if (
    $na == ){ 
        
    $ma "Ort"
        } 

        echo 
    $ma
        
    $dat $data[$c]; 
        echo 
    $dat
        echo 
    "<br/>"
        
    mysql_query("INSERT INTO adressen1 ($ma) VALUES ('$dat')"); 
    Diese Script gibt via echo die zu erwartenden inhalte aus. Aber er will es einfach nicht in die Datenbank schreiben!

    Kann da jemand helfen?
    Allgemein versuch ich eine csv datei in sql zu importiern. Ich hab schon alles ausprobiert auch via phpmyadmin. Aber es will einfach nichts klappen!

    gruß Jesse


  • #2
    Was auch immer du da machst. Schreibe mal am Ende deines Skriptes folgendes anstatt dem jetzigen:

    PHP-Code:
    <?php
    echo $ma
    $dat $data[$c]; 
    echo 
    $dat
    echo 
    "<br/>"
    $query "INSERT INTO adressen1 ($ma) VALUES ('$dat')";
    echo 
    $query;
    mysql_query($query);
    Wenn du dir den Query mal ausgeben lässt wirst du sehen wo der Fehler liegt Kannst ja mal den Query dann hier posten.

    Kommentar


    • #3
      Danke für die schnell Antwort!
      Bei dem Teil:
      PHP-Code:
      $query "INSERT INTO adressen1 ($ma) VALUES ($dat)";
               echo 
      $query
      bekomm ich folgendes Ausgegeben:
      INSERT INTO adressen1 (geschlecht) VALUES (G)
      INSERT INTO adressen1 (vorname) VALUES (Vorname)

      Also genau das was es sein müsste. Aber in die Datenbank wird es nicht so übernommen!

      Jesse

      Kommentar


      • #4
        Nö. String-Werte gehören in Stringbegrenzer
        --

        „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
        Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


        --

        Kommentar


        • #5
          ???ehm sry...und das heißt......

          Kommentar


          • #6
            INSERT INTO adressen1 (vorname) VALUES ('Red')

            EDIT:
            Und bitte mysql_query($query) or die(mysql_error()); benutzen

            Wird das eigentlich niemandem beigebracht?

            Kommentar


            • #7
              Zitat von RedDragon Beitrag anzeigen
              ???ehm sry...und das heißt......
              Aber was Strings sind, weisst du schon?

              Ausserdem brauchst doch du doch nicht für jedes Attribut einen eigenen Insert, das geht doch alles auf einmal. Mit dem folgenden Code schmeisst du all Daten mit einer einzigen Abfrage in die DB (ich gehe jetzt mal davon aus, dass dein Attribut «strassenname» und nicht - wo finde ich jetzt dieses verdammte Zeichen - «straßenname» heisst):
              PHP-Code:
              $handle fopen("ad2.csv""r");
              $db_daten = array();
              while ((
              $data fgetcsv($handle10000",")) !== FALSE) {
                  
              $db_daten[] "('" implode("', '"$data) . "')";
              }
              $sql "
                  INSERT INTO dressen1 (
                      geschlecht,
                      vorname,
                      nachname,
                      strassenname,
                      postleitzahl,
                      ort
                  )
                  VALUES ('"
                          
              implode(",\n"$db_daten) . "'
                      )"
              ;     
              echo 
              "$sql<br />"// Nur zu Testzwecken
              mysql_query($sql) or exit(mysql_error()); 
              Noch einfacher wäre es in dem Fall mit LOAD DATA INFILE
              Gruss
              L

              Kommentar


              • #8
                @lazy: dein Code bringt aber ein ganz anderes Ergebnis als seiner, er legt ja für jeden Wert nen neuen Datensatz an... da das wenig Sinn macht ist dein Code wohl so oder so der richtige

                Kommentar


                • #9
                  Zitat von cycap Beitrag anzeigen
                  er legt ja für jeden Wert nen neuen Datensatz an...
                  Da hast du recht, er weiss offensichtlich nicht nur nicht, was ein String ist, sondern auch nicht was ein Datenbankeintrag. Stell mir jetzt einfach mal vor, was dann herauskommt, wenn er es so macht:
                  Code:
                  mysql> SELECT * FROM adressen1;
                  +------------+---------+----------+----------------+--------------+----------+
                  | geschlecht | vorname | nachname | strassenname   | postleitzahl | ort      |
                  +------------+---------+----------+----------------+--------------+----------+
                  | m          |    NULL |     NULL |           NULL |         NULL |     NULL |
                  |       NULL | Fritz   |     NULL |           NULL |         NULL |     NULL |
                  |       NULL |    NULL | Schulz   |           NULL |         NULL |     NULL |
                  |       NULL |    NULL |     NULL | Friedhofstr. 1 |         NULL |     NULL |
                  |       NULL |    NULL |     NULL |           NULL |       999999 |     NULL |
                  |       NULL |    NULL |     NULL |           NULL |         NULL | Irgendwo |
                  | w          |    NULL |     NULL |           NULL |         NULL |     NULL |
                  |       NULL | Ulla    |     NULL |           NULL |         NULL |     NULL |
                  |       NULL |    NULL | Maier    |           NULL |         NULL |     NULL |
                  |       NULL |    NULL |     NULL | Waldweg 88     |         NULL |     NULL |
                  |       NULL |    NULL |     NULL |           NULL |       777777 |     NULL |
                  |       NULL |    NULL |     NULL |           NULL |         NULL | Anderswo |
                  +------------+---------+----------+----------------+--------------+----------+
                  Gruss
                  L

                  Kommentar


                  • #10
                    schon cool wozu brauch man denn sowas?

                    Kommentar


                    • #11
                      Sieht hübsch aus!

                      Kommentar


                      • #12
                        Zitat von RedDragon Beitrag anzeigen
                        INSERT INTO adressen1 (geschlecht) VALUES (G)
                        und was ist G für ein Geschlecht? lol

                        Kommentar


                        • #13
                          Da gehts doch insgeheim um die Größe ...

                          Kommentar


                          • #14
                            Mies.....
                            Erstens so blöd bin ich auch nicht, das ich nich weiß was n string ist. Ich hatte nur gefragt, weil ich alle möglichkeiten zur Trennung ausprobiert hab und immer nur müll raus kam!
                            Zweitens benutz ich die beiden anderen Methoden nicht, da es bisher nicht geklappt hat.
                            Und auch mit dem geposteten script hauts nicht hin.
                            Er hat n Problem mit: $db_daten[] "('" . implode("', '", $data) . "')";

                            Aus diesem Grund hab ich halt versuch das zu umgehen. Wenn mir allerdings einer sagen kann, wie ich das einfacher hinbekomme, bin ich natürlich offen für vorschläge!

                            Kommentar


                            • #15
                              Lass dir doch den Query ausgeben dann siehst du wo der Fehler ist!! Man müssen wir alles für dich machen?

                              Am Ende vom Query wo die Daten eingefügt werden müssen die Klammern weg da diese ja schon beim ersten implode() gesetzt werden.

                              PHP-Code:
                              $handle fopen("ad2.csv""r");
                              $db_daten = array();
                              while ((
                              $data fgetcsv($handle10000",")) !== FALSE) {
                                  
                              $db_daten[] "('" implode("', '"$data) . "')";
                              }
                              $sql "
                                  INSERT INTO dressen1 (
                                      geschlecht,
                                      vorname,
                                      nachname,
                                      strassenname,
                                      postleitzahl,
                                      ort
                                  )
                                  VALUES
                                      " 
                              implode(",\n"$data);     
                              echo 
                              "$sql<br />"// Nur zu Testzwecken
                              mysql_query($sql) or exit(mysql_error()); 

                              Kommentar

                              Lädt...
                              X