MySQL Datensatz hinzufügen
lvl
- datenbank
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.
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
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
» »» 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
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
hi,
mit INSERT.
Wie meinst Du denn das jetzt?
falsch gelesen, dachte er wollte einen neuen datensatz einfügen ...
gruß,
wahsaga
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 | horstmit 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
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
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??
yo,
Bin ich blind??
dann nimm doch den zweiten ansatz mit concat oder geht der auch nicht ?
Ilja
dann nimm doch den zweiten ansatz mit concat oder geht der auch nicht ?
Ne auch nicht...
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
Habs hin bekommen hab AND geschrieben... Dann hat er es gemacht...
Frag mich nicht warum, aber auch nur mit CONCAT