serialisiertes Array in Datenbank schreiben

Registrierer

Erfahrenes Mitglied
Ich finde alles zu serialisize() und deren Anwendungsformen, aber nichts wie man einen String wie:
PHP:
a:4:{i:0;s:1:"2";i:1;s:1:"1";i:2;s:1:"3";i:3;s:1:"4";}
in die Datenbank schreiben kann. Er stammt aus einem einfachen Array, das hier im Beispiel 2, 1, 3 und 4 enthält.
Es heißt: Dieser String kann nun direkt in die Datenbank geschrieben werden.
Nun ja... Kopfkratz... Dazu finde ich nichts oder ich suche nach dem falschen.
Ist preg_replace() hier angeraten?
 
Hi,

abgesehen davon, dass sowas in der Regel darauf hindeutet, dass das Datenbankmodell Käse ist,

Ich finde alles zu serialisize() und deren Anwendungsformen, aber nichts wie man einen String wie:
PHP:
a:4:{i:0;s:1:"2";i:1;s:1:"1";i:2;s:1:"3";i:3;s:1:"4";}
in die Datenbank schreiben kann.

wie jeden anderen String auch. Wo ist das Problem?

Ist preg_replace() hier angeraten?

Wieso? Was willst Du denn ersetzen?

LG
 
Hi,
abgesehen davon, dass sowas in der Regel darauf hindeutet, dass das Datenbankmodell Käse ist,
Kann schon sein..., ich weiss es (noch) nicht besser...
Wieso? Was willst Du denn ersetzen?
Ich will nichts ersetzen. Es gibt eine Tabelle, die die Beziehungen verschiedener Tabellen untereinander regelt. Daher hier auch nur Zahlen.
Sie hat nur 4 Felder: id, benutzer, daten, gruppe.
Im o. g. Beispiel sind nur die Daten für das Feld "benutzer" angegeben, d. h. es sollten vier Datensätze erzeugt werden
PHP:
mysql_query("INSERT INTO $beziehung (id, benutzer, daten, gruppe) VALUES('', '$inf_benutzer', '$inf_daten', '$inf_gruppe);");
vorher lasse ich das Array mit:
PHP:
$inf_benutzer = serialize($_REQUEST['Benutzer']);
serialisieren worauf dieser String entsteht, der aber nicht 4, sondern nur einen Datensatz erzeugt. Vielleicht hab ich mich ja auch verdacht.
 
Hi,

vorher lasse ich das Array mit:
PHP:
$inf_benutzer = serialize($_REQUEST['Benutzer']);
serialisieren worauf dieser String entsteht, der aber nicht 4, sondern nur einen Datensatz erzeugt.

warum serialisierst Du das Array dann, wenn Du gar nicht diesen String in die Datenbank eintragen willst, sondern einen Datensatz für jedes Element des Arrays? :confused:

LG
 
Registrierer:
Du weist nicht was Serialisieren einer Variablen ist, oder?
Damit kannst du Arrays, Objekte etc. als String (Zeichenkette) darstellen.

Wenn du alles einzeln speichern willst, dann musst du alles einzeln speichern ;)

SQL:
INSERT INTO `tabelle`
(
  `spalte1`,
  `spalte2`
) VALUES (
  'wert1',
  'wert2'
)

Bzw.:
PHP:
$sql = "INSERT INTO `tabelle`
(
  `spalte1`,
  `spalte2`
) VALUES (
  '" . $variable . "',
  '" . $noch_eine . "'
)";
 
Zuletzt bearbeitet von einem Moderator:
Wenn ich das richtig verstanden habe, sollte ich also Daten die aus einer Tabelle stammen nicht unbedingt zu einem Array zusammenfassen, da ich mir damit Probleme erst schaffe wenn ich sie wieder einfügen will.
Ich glaube, das meinte kuddeldaddeldu mit

abgesehen davon, dass sowas in der Regel darauf hindeutet, dass das Datenbankmodell Käse ist,

Ich versuch das Datenbankmodell mal neu zu stricken, da wird man ja nicht Dümmer von...

Danke für Eure Hilfestellungen.

LG Helmut
 
Hi,

Wenn ich das richtig verstanden habe, sollte ich also Daten die aus einer Tabelle stammen nicht unbedingt zu einem Array zusammenfassen, da ich mir damit Probleme erst schaffe wenn ich sie wieder einfügen will.
Ich glaube, das meinte kuddeldaddeldu mit
"abgesehen davon, dass sowas in der Regel darauf hindeutet, dass das Datenbankmodell Käse ist,"


Ich versuch das Datenbankmodell mal neu zu stricken, da wird man ja nicht Dümmer von...

:confused: Nee, das meinte ich ganz bestimmt nicht. Ich war ja davon ausgegangen, dass Du das Array zu einem String serialisiert in die DB schreiben willst, also mehrere Informationen in ein einziges Feld. Das wäre Käse...

LG
 
Ich war ja davon ausgegangen, dass Du das Array zu einem String serialisiert in die DB schreiben willst, also mehrere Informationen in ein einziges Feld. Das wäre Käse...

Hab ich mich wohl verdrückt ausgekehrt...
Der Unterschied zwischen
PHP:
<input type=\"checkbox\" name=\"Benutzer1[]\" value=\"".$row['UserID']."\">";

und

PHP:
<input type=\"checkbox\" name=\"Benutzer1\" value=\"".$row['UserID']."\">";

ist ja, das ich bei "Benutzer1[]" die Daten nicht mehr einfach mit $_POST auswerten kann und dann in der Form

PHP:
$user = $_POST['Benutzer1'];
("INSERT INTO tabelle (benutzer) VALUES('$user')")

in die Tabelle einfügen kann.
Jedenfalls steht Herr Lerdorf mit beiden Füssen auf meiner Denkleitung :mad:
 
Dann machst
PHP:
$user = $_POST['Benutzer1'][0];

Weist was:
Zeige doch mal das Formular (nur das Formular von <form..> bis </form>) und deine Datenbankstruktur (für phpMyAdmin -> Exportieren -> CREATE TABLE hier zeigen).

Dann zeigen wir dir mal was der Herr Lerdorf und Herr Codd sich tolles ausgedacht haben.

Edit: Aber bitte ordentlich formatierten (Quell-)text mit Einrückung etc. Verlier sofort die lust bei hingeklatschtem Code :p
 
Zuletzt bearbeitet:
Zurück