|
insert array into mysql table |
Tommmy
Pixelschubser Threadstarter
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
|
Ehemaliges Mitglied (#378)
Quasselstrippe
Beiträge: 282 |
Hallo Tommmy,
für das Speichern von arrays wäre vielleicht serialize eine bessere Idee...
php:serialize
Viele Grüße
Mondschatten
|  Profil
Editieren
Zitieren
|
Tommmy
Pixelschubser Threadstarter
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
|
Ehemaliges Mitglied (#378)
Quasselstrippe
Beiträge: 282 |
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
|  Profil
Editieren
Zitieren
|
Tommmy
Pixelschubser Threadstarter
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
Foren-Team
Beiträge: 419 |
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 Threadstarter
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
| |
|
|