array in DB einlesen

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

  • array in DB einlesen

    Hallo leute

    habe hier ein kleines problem mit mysql vielleicht kann mir da mal einer

    weiterhelfen. Und zwar möchte ich den inahlt eines array in eine mysql
    tabelle speicher. Die daten sollen aber nur in den Zeilen mit einer entsprechenden ID gespeichert werden.

    ich habe das ganze versucht so zu lösen

    PHP-Code:
    $id ="1";
    $var0 "5";
    $var1 "2";
    $var[0] = $var0*5;
    $var[1] = $var1*5;
            
    foreach(
    $var as $key => $value
    {
    $tablename 'testtbl';
    $sql "UPDATE $tablename SET test='".addslashes($value)."'
                 WHERE id=
    $id ";
    $query mysql_query($sql);
                   }
     if(
    $query)
     {echo 
    $var[1];}
       else{
    $meldung mysql_error();echo $meldung;} 
    So scheint es aber irgendwie net zu gehn. So wird nichts in die DB geschrieben. Es kommt aber auch kein mysql fehler sondern es wird die 10 ausgegeben .

    so sieht die tabelle nach dem ausführen des scripts aus.

    | id | name | test |
    ----------------------
    |1 | bla1 | null |
    |1 | bla2 | null |
    und so sollte es aussehen

    | id | name | test |
    ----------------------
    |1 | bla1 | 25 |
    |1 | bla2 | 10 |
    wäre klasse wenn mir da wer weiterhelfen könnte)

    schonmal danke

    bye
    mo

  • #2
    Wie ist denn test in der Tabelle definiert ? Als int oder varchar ?
    Gruss

    tobi
    Zuletzt geändert von jahlives; 23.08.2006, 02:31.
    Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

    [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
    Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

    Kommentar


    • #3
      test ist als float(11,10) da ich auch zahlen mit mehren stellen nach dem komma aufnehmen möchte. Aber probier das auch mal ohne addslashes.

      schonmal danke
      bye mo



      EDIT:

      So habs mal ohne addslashes probiert aber scheint immer noch net zu gehen

      Zuletzt geändert von stigger; 23.08.2006, 02:37.

      Kommentar


      • #4
        test ist als float(11,10) da ich auch zahlen...
        Du versuchst aber diese als Strings (bzw varchar) zu schreiben, weil du um den Wert drum noch ' und ' packst. Mach die mal weg und schaue ob was eingetragen wird...
        AddSlashes hast du ja zur Sicherheit eigebaut. Wenn diese Fkt aber greifen würde, dann würde daraus ein imho ungültiger Zahlwert entstehen

        Gruss

        tobi
        Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

        [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
        Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

        Kommentar


        • #5
          Habs jetzt mal so geändert

          PHP-Code:
          SET test =".$value." 
          aber geht immer noch net

          und so gehts wohl auch nicht

          PHP-Code:
          SET test =$value 
          was mich irgendwie wundert ist das kein mysql fehler kommt.

          naja irgendwie wird das sicher hinzubekommen sein.

          aber schonmal danke für deine hilfe

          gruss
          mo
          Zuletzt geändert von stigger; 23.08.2006, 02:44.

          Kommentar


          • #6
            PHP-Code:
            var_dump($var); 
            Was für Typen haben denn diese Zahlen (sind es für PHP ggf Strings ?)

            Gruss

            tobi

            EDIT:

            Und jetzt brauch ich einen Kaffee

            Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

            [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
            Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

            Kommentar


            • #7
              So wie es aussieht wird sie von php als float erkannt.

              komisch komisch

              kaffee is aber ne gute idee ))

              so funktioniert es halb er schreibt jetzt nur bei bla1 und bla2

              die 10,000000000 rein

              hier mal der code soweit
              PHP-Code:
              $id ="1";
              $var0 "5";
              $var1 "2";
              $var[0] = $var0*5;
              $var[1] = $var1*5;
                      
              foreach(
              $var as $key => $value
              {
              $tablename 'testtbl';
              $sql "UPDATE $tablename SET test=".$value."
                           WHERE id=
              $id ";
              $query mysql_query($sql);
                             }
               if(
              $query)
               {echo 
              $var[1];}
                 else{
              $meldung mysql_error();echo $meldung;} 
              Zuletzt geändert von stigger; 23.08.2006, 03:03.

              Kommentar


              • #8
                Ist mir gerade noch aufgefallen (ja Kaffe wirkt wunder
                Diese Zeile bringt ned viel
                PHP-Code:
                if($query){
                    echo 
                $var[1];
                }else{
                    
                $meldung mysql_error();echo $meldung;
                }
                //besser so
                if($query === true){
                    echo 
                $var[1];
                }else{
                    echo 
                mysql_error();
                }
                //und auch noch
                $query mysql_query($sql) OR die(mysql_error()); 
                Das Problem bei deinem if ist, dass du nur prüfst ob die Var gesetzt ist
                if($var) === if(isset($var))
                Der Rückgabewert von mysql_query für UPDATe ist aber entweder true oder false. Also exisitert query in jedem Fall und drum wird kein Fehler geworfen.
                Also schau mal ob so eine Fehlermeldung kommt.

                Gruss

                tobi
                Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

                [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
                Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

                Kommentar


                • #9
                  Das hat leider auch nichts gebracht.

                  Hab immer noch die 10,000000 in beiden feldern:_((

                  Kommentar


                  • #10
                    Hab immer noch die 10,000000 in beiden feldern
                    in beiden Feldern obwohl der die Werte im Array unterschiedlich sind
                    Gruss

                    tobi
                    Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

                    [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
                    Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

                    Kommentar


                    • #11
                      so siehts aus es sollte eigentlich eine 10,000000 und eine 25,00000

                      drinstehen. Ist irgendwie zum verzweifeln :-(

                      Kommentar


                      • #12
                        sollte eigentlich eine 10,000000 und eine 25,00000
                        Und dem ist auch so, die Werte stehen wie gewünscht im Array ? Du siehst aber schon, dass MySql bei deiner Version maximal ein Feld anpasst. Denn beide haben dieselbe id und diese steht in der where Bedingung, also wird wohl nur das erste Feld geschrieben erst mit 25,00000 und dann mit 10,0000 überschrieben.

                        Gruss

                        tobi
                        Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

                        [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
                        Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

                        Kommentar


                        • #13
                          das scheints zu sein

                          nur wie kann ich das umgehen

                          ich sehe auch gerade das php immer wechselt mal ist es eine in und dann wieder eine float

                          kann ich das nicht vorher schon definieren

                          Kommentar


                          • #14
                            nur wie kann ich das umgehen
                            Indem du ne andere Bedingung findest. Du hast doch sicher eine eindeutige ID für die Datensätze (ein int feld als PRIMARY KEY NOT NULL AUTO_INCREMENT definiert)
                            Dieses kannst du dann in die Bedingung einbauen. Aber solange du where id=$id hast und $id=1 ist, wirst du immer nur den ersten Datensatz auf den die Bedingung zutrifft updaten.
                            ch sehe auch gerade das php immer wechselt mal ist es eine in und dann wieder eine float
                            Müsste aber eigentlich immer ein int sein, weil PHP ein Typecasting macht und den für die Var zutreffendsten Typ nimmt.

                            Gruss

                            tobi
                            Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

                            [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
                            Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

                            Kommentar


                            • #15
                              eine primkey hab ich

                              aber bn noch net so drauf gekommen wie ich das am besten da mit ein baue.

                              Kommentar

                              Lädt...
                              X