Home | Registrieren | Einloggen | Suchen | Aktuelles


Forum » PHP & MySQL » insert array into mysql table Antworten
insert array into mysql table

Tommmy
Pixelschubser


Beiträge: 16


Hallo!

Ich hab mal ne Frage, ich will den Inhalt von einem 2dimensionalen Array (action[][]) in eine Tabelle packen:

1:
mysql_query("INSERT INTO action (Battle_id, Action_1, Action_2, Action_3, Action_4, Action_5) VALUES ('21', '$action[1][0]', '$action[1][1]', '$action[1][2]', '$action[1][3]', '$action[1][4]')")


wenn ich das so mache, und dann später die Tabelle folgendermaßen auslesen:
1: 
2: 
3: 
4: 
5: 
6:
$result = mysql_query("SELECT * FROM action WHERE Battle_id = '21'");
$row = mysql_fetch_row($result);
if ($row)
{
print_r($row);
}


dann wird son mist ausgegeben:

Array ( [0] => Array[ [1] => Array[ [2] => Array[ [3] => Array[ [4] => Array[ ) )

also der Inhalt von z.B. Action_1 ist dann: "Array["

warum ist das so?

Ich kann das so umgehen:
1: 
2: 
3: 
4: 
5: 
6: 
7: 
8: 
9: 
10:
$u1 = $action[1][0];
$u2 = $action[1][1];
$u3 = $action[1][2];
$u4 = $action[1][3];
$u5 = $action[1][4];

...

mysql_query("INSERT INTO action (Battle_id, Action_1, Action_2, Action_3, Action_4, Action_5) VALUES ('21', '$u1', '$u2', '$u3', '$u4', '$u5')")


Wenn ich das so ^^ mache, dann ist der Inhalt von $row später beim Auslesen korrekt ... aber im prinzip ist das doch ncihts anderes als die erste Version ...

kann mir jemand helfen, das wäre übelst cool!

Danke!

  Profil   E-Mail   Editieren   Zitieren

Mondschatten
Quasselstrippe


Beiträge: 250


Hallo Tommmy,

für das Speichern von arrays wäre vielleicht serialize eine bessere Idee...
php:serialize

Viele Grüße
Mondschatten

---
Schwarz kann auch glänzen.

  Profil   Website   Editieren   Zitieren

Tommmy
Pixelschubser


Beiträge: 16


Danke Mondschatten!

Also serialize kannte ich bis jetzt noch nicht, das klingt wirklich ziemlich gut!

Aber ich hab da ein Problem:
Welche Größe soll ich denn da für die myql-tabellen-Spalten einstellen:

$sql = "CREATE TABLE action
(
Battle_id int,
Action_1 varchar(4),
Action_2 varchar(4),
Action_3 varchar(4),
Action_4 varchar(4),
Action_5 varchar(4)
)";

weil ich weiß ja nun garnicht, wie groß serialize mein Array dann schlussendlich macht ...

Diese Nachricht wurde geändert von: Tommmy
  Profil   E-Mail   Editieren   Zitieren

Mondschatten
Quasselstrippe


Beiträge: 250


Hallo Tommmy,

der Datentyp ist ein String.

Wie viel Platz Dein Array einnimmt, hängt von der Größe des Arrays selbst ab. Ob Du als Datentyp eine bestimmte Stringlänge oder Text nimmst, hängt davon ab, inwieweit Du abschätzt, wie groß Dein Array werden kann. Probier's doch einfach mal aus.

Grüsse
Mondschatten

---
Schwarz kann auch glänzen.

  Profil   Website   Editieren   Zitieren

Tommmy
Pixelschubser


Beiträge: 16


Huhu :D

Also, ich kann das hier aber auch nciht machen:

mysql_query("INSERT INTO battle (Battle_id1, Battle_id2, Player_2) VALUES (11, 21, serialize($armees))")

also direkt mit serialize da rein gehen, oder?

ich muss es über diesen Umweg machen:

$ser_text = serialize($armees);
mysql_query("INSERT INTO battle (Battle_id1, Battle_id2, Player_2) VALUES (11, 21, '$ser_text')")

oder?

  Profil   E-Mail   Editieren   Zitieren

chip
Quasselstrippe


Beiträge: 391


Variablen in Quotes zu schreiben ist eine schlechte Angewohnheit. Daher erklärt es sich auch, dass das mit serialize() nicht funktioniert, da serialize() eine Funktion ist, die NIEMALS in Anführungszeichen geschrieben werden darf, es sei denn man möchte die Funktion einfach nur als string haben.
So sollte es bei dir gehen:

1:
mysql_query("INSERT INTO battle (Battle_id1, Battle_id2, Player_2) VALUES (11, 21, '".serialize($armees)."')");


---

Diese Nachricht wurde geändert von: chip
  Profil   Website   Editieren   Zitieren

Tommmy
Pixelschubser


Beiträge: 16


Ah cool, danke chip, das ist ja cool!

Dankeschön. Fürs Erste sind meine Fragen beantwortet *gg*

  Profil   E-Mail   Editieren   Zitieren
 

Antworten
Nach oben