lvl: MySQL Datensatz hinzufügen

Also ich habe eine vorhandene spalte mit inhalt

nun könnte ich einen wert mit UPDATE und SET überschreiben, aber kann ich auch an einem datensatz daten anhängen und wenn ja, wie?

oder wie kann ich wenn ich zB in einer spalte stehen habe

id | anzahl_links  | name
1  | 1, 2, 3, 5, 6 | horst

mit welchem befehl kann ich zB. nummer 5 löschen,
und nummer 8 hinten einfügen?

ich hoffe ihr versteht was ich will, wenn nicht einfach fragen.

  1. hi,

    Also ich habe eine vorhandene spalte mit inhalt

    nun könnte ich einen wert mit UPDATE und SET überschreiben, aber kann ich auch an einem datensatz daten anhängen und wenn ja, wie?

    mit INSERT.

    gruß,
    wahsaga

    --
    /voodoo.css:
    #GeorgeWBush { position:absolute; bottom:-6ft; }
    1. Hello,

      nun könnte ich einen wert mit UPDATE und SET überschreiben, aber kann ich auch an einem datensatz daten anhängen und wenn ja, wie?

      mit INSERT.

      Wie meinst Du denn das jetzt?

      Wenn Du jetzt gesagt hättest "mit APPEND" hätte ich noch schmunzeln können, aber INSERT ist doch wenig zielführend, um _innerhalb_ eines Datensatzes an einen Feldinhalt etwas anzuhängen.

      Hier scheinen ja lvl auch die Begriffe etwas durcheinander geraten zu sein, aber deshalb sollten wir doch erst recht gute Lösungswege aufzeigen, oder?

      Harzliche Grüße aus http://www.annerschbarrich.de

      Tom

      --
      Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
      Nur selber lernen macht schlau
      1. » »» mit INSERT.

        Wie meinst Du denn das jetzt?

        Wenn Du jetzt gesagt hättest "mit APPEND" hätte ich noch schmunzeln können, aber INSERT ist doch wenig zielführend, um _innerhalb_ eines Datensatzes an einen Feldinhalt etwas anzuhängen.

        Das ist mein Prob. :)

        $sql2 = "   INSERT INTO t_table
                        (fid_db)
                    VALUES
                        ('".addslashes(htmlspecialchars($_POST['db']))."')
           WHERE id_table = '$id'";

        irgend wie macht er das nicht...
        er bekommt mit dem WHERE probleme
        wie löst man es?
        APPEND hab ich in meinem php4 buch nicht gefunden :)

        Hier scheinen ja lvl auch die Begriffe etwas durcheinander geraten zu sein, aber deshalb sollten wir doch erst recht gute Lösungswege aufzeigen, oder?

        jo, sorry

        1. Hello,

          APPEND hab ich in meinem php4 buch nicht gefunden :)

          Das war ja auch nur ein Witz zum Schmunzeln, da APPEND in eingigen uralten SQL-Dialekten und z.B. dBase-Datenbanken für das anfügen von Datensätzen stand. In MySQL gibt's sowas natürlich nicht.

          Du müsstest auch nicht "an einen Datensatz etwas anhängen" sondern an einen Feldinhalt (Spaltenwert) eines Datensatzes etwas anhängen. Das geht eben einfach mit concat()

          http://dev.mysql.com/doc/mysql/de/string-functions.html

          Harzliche Grüße aus http://www.annerschbarrich.de

          Tom

          --
          Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
          Nur selber lernen macht schlau
      2. hi,

        mit INSERT.

        Wie meinst Du denn das jetzt?

        falsch gelesen, dachte er wollte einen neuen datensatz einfügen ...

        gruß,
        wahsaga

        --
        /voodoo.css:
        #GeorgeWBush { position:absolute; bottom:-6ft; }
  2. Hello,

    nun könnte ich einen wert mit UPDATE und SET überschreiben, aber kann ich auch an einem datensatz daten anhängen und wenn ja, wie?

    oder wie kann ich wenn ich zB in einer spalte stehen habe

    id | anzahl_links  | name
    1  | 1, 2, 3, 5, 6 | horst

    mit welchem befehl kann ich zB. nummer 5 löschen,
    und nummer 8 hinten einfügen?

    Das wäre ein typischer Fall für eine notwendige Normalisierung, also Ausgliederung der Spalte
    anzahl\_links in eine eigene Tabelle

    id | link
       1 | 1
       1 | 2
       1 | 5
       1 | 3
       1 | 6
       1 | 4

    Denn nun könntest Du auf die atomistische Struktur der Daten zugreifen:

    delete from links where id = '1' and link = '5';
      insert into links set id = '1', link = '8';

    oder in einem Statement, wenn genau ausgetauscht werden muss:

    update links set link = '8' where id =  '1' and link = '5';

    Wenn Du es so lässt, wie Du es jetzt hast, dann schau Dir bitte die String-Funktionen von MySQL an:
    http://dev.mysql.com/doc/mysql/de/functions.html

    und genau:

    instr()

    http://dev.mysql.com/doc/mysql/de/string-functions.html#id2875531

    Harzliche Grüße aus http://www.annerschbarrich.de

    Tom

    --
    Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
    Nur selber lernen macht schlau
  3. yo,

    nun könnte ich einen wert mit UPDATE und SET überschreiben, aber kann ich auch an einem datensatz daten anhängen und wenn ja, wie?

    indem du die werten des alten datensatzes in die Update Anweisung mit einbaust.

    UPDATE tabellenname SET spaltenname = spaltenname || ",8";

    oder

    UPDATE tabellenname SET spaltenname = CONCAT(spaltenname, ",8");

    und so kannst du fast die ganze palette von mysql funktionen in deinem Update beutzen, um auf das gewünschte ergebnis zu komen.

    http://dev.mysql.com/doc/mysql/en/functions.html

    Ilja

    1. Hi und danke,
      aber

      UPDATE tabellenname SET spaltenname = spaltenname || ",8";

      fid_db = fid_db || '".addslashes(htmlspecialchars(implode(", ", $_POST['db'])))."'
      oder
      fid_db = fid_db || '".addslashes(htmlspecialchars(implode("\n", $_POST['db'])))."'

      implode() ist ein Bad argument
      WARUM? bei nem INSERT geht das so :(
      Bin ich blind??

      1. yo,

        Bin ich blind??

        dann nimm doch den zweiten ansatz mit concat oder geht der auch nicht ?

        Ilja

        1. dann nimm doch den zweiten ansatz mit concat oder geht der auch nicht ?

          Ne auch nicht...

          1. yo,

            Ne auch nicht...

            kann es sein, dann du eventuell das in php einbaust und er durch die " durcheinander kommt und du das etwa durch ' ersetzen musst ?

            Ilja

            1. Habs hin bekommen hab AND geschrieben... Dann hat er es gemacht...
              Frag mich nicht warum, aber auch nur mit CONCAT