replace

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

  • replace

    Bei mir funktioniert der "replace-Befehl" irgendwie nicht richtig oder ich mache was falsch.
    Muß das "unique bzw. primary-key-Feld" irgendeinen bestimmten Datentyp haben ? Ich habe nämlich hierfür ein decimal-Feld gewählt, da sich der Primärschlüssel aus einer Rechenoperation ergibt (z. B. 20030113/798228 = 25.0933).
    Oder kann es daran liegen, daß sich das primary-key-Feld erst am Ende meiner Tabelle befindet.
    Ich habe nämlich das Problem, daß meine alten Datensätze immer wieder überschrieben werden, obwohl ich einen "unique-key" (z. B. 25.0933) habe.
    Da sich mein unique-key mit jedem Tag ändert, müssten die neuen Datensätze eigentlich immer weiter hinzugefügt werden.
    Vielleicht hat ja jemand 'ne Idee woran das liegen kann ???

  • #2
    eigentlich sollte der REPLACE Befehl den Datensatz nur überschreiben, wenn du einen neuen Datensatz mit ddem selben PRIMARY KEY einfügst.
    Ob das an dem Feldtyp liegt weiß ich nicht, die Position der Spalte innerhalb der Tabelle sollte aber keinen Einfluß darauf haben.
    TBT

    Die zwei wichtigsten Regeln für eine berufliche Karriere:
    1. Verrate niemals alles was du weißt!


    PHP 2 AllPatrizier II Browsergame

    Kommentar


    • #3
      Ganz meine Meinung !
      Ich kann 's auch irgendwie nicht nachvollziehen !

      Kommentar


      • #4
        Also wenn du ein mysqld-db Feld einfach nur überschreiben willst, warum nimmst dann nicht UPDATE ?

        PS: bei mir sind Unique-key und Primary-key immer int's für Integer.

        Kommentar


        • #5
          @MaxPayne: Mir geht 's ja gerade darum, die alten Werte nicht zu überschreiben !

          Kommentar


          • #6
            Bin leider immer noch nicht weiter gekommen !
            Vielleicht bietet ja mein Code einen Anhaltspunkt ???

            $openit = file($CSV);

            $filearray = file("$CSV");
            $del = array_slice ($filearray, 1); // löscht den ersten Datensatz des arrays (Feldnamen)

            $item = explode("$seperator", $del[$i]);
            $tagr = "$item[8]";
            $tagw = explode (".", $tagr);
            $feld8 = "$tagw[2]-$tagw[1]-$tagw[0]";
            $feld1 = "$feld8"*"$item[0]";

            $query = "insert ignore into niv_dritt_hist (id_niv_dritt_hist, Fondsvolumen, Ausgabepreis, Rücknahmepreis, Anteile_im_Umlauf, Zwischengewinn, Datum) values ('$feld1', '$item[3]', '$item[4]', '$item[5]', '$item[6]', '$item[7]', '$feld8')";

            Alternativ zu "insert ignore" hab' ich auch schon "replace" ausprobiert - nützt aber nichts. Trotz eindeutiger "primary-keys" werden die alten Daten immer wieder überschrieben.
            Zuletzt geändert von Honny; 14.01.2003, 22:01.

            Kommentar


            • #7
              probiert das doch einfach mal mitm INT als primary key, und guck ob die selbe konstelation geht, wenn ja, dann weiss du ja wo der hacken ist.
              meine Projekte bestaunen: http://www.kleiza.de

              Kommentar


              • #8
                Ich hatte es mittlerweile schon mit einem "int-primary-key" versucht. Ohne Erfolg !
                Ich habe aber jetzt festgestellt, daß mein primary-key anscheinend wohl doch nicht so "unique" ist wie ich dachte. Aber verstehen tue ich es trotzdem nicht !
                Mein primary-key soll aus dem Produkt von $feld8 u. $item[0] gebildet werden. Wobei $feld8 das Datum in Form von z. B. "20030103" representiert und $item[0] ist eine Kto.-Nr. (z. B. 798228). Dies ergibt eine Zahl, die auf jeden Fall unique sein müsste. Anscheinend liegt der Fehler irgendwo beim reinschreiben des Produktes in die db, da ich bei unterschiedlichen Tagen beim jeweiligen Datensatz immer das gleiche Produkt erhalte und demzufolge natürlich die alten Datensätze überschrieben werden.
                Vielleicht hat ja jemand 'ne andere Idee zur Generierung eines individuellen Schlüssels auf Basis des Datums ???

                Kommentar


                • #9
                  du kannst ein unique über mehrere felder machen. also in deinem fall datum und kontonummer... vielleicht bringt dich das weiter.
                  meine Projekte bestaunen: http://www.kleiza.de

                  Kommentar


                  • #10
                    Junge, Junge !!! Du hast wirklich Ahnung !

                    Das könnte funktionieren. Werd' ich gleich mal ausprobieren.

                    Danke !

                    Kommentar


                    • #11
                      JuuHuuuuuu !!!!! Es funzt !!!!!

                      Schade nur, daß ich nicht rausbekomme, warum meine Lösung nicht funktioniert.

                      Kommentar


                      • #12
                        mit der erfahrung kommt das...
                        meine Projekte bestaunen: http://www.kleiza.de

                        Kommentar

                        Lädt...
                        X