Speichern und Abrufen von Arrays in MySQL
Das Speichern von Arrays in einem einzelnen MySQL-Feld wird aufgrund von Problemen bei der Normalisierung relationaler Daten nicht empfohlen. Wenn jedoch das Speichern eines Arrays in einem einzelnen Feld erforderlich ist, können die Funktionen serialize() und unserialize() verwendet werden.
Um ein Array ($a) in einem MySQL-Feld zu speichern, konvertieren Sie es mit in einen String serialize():
$a_serialized = serialize($a); // $a_serialized: 'a:2:{i:1;a:3:{s:1:"a";i:1;s:1:"b";i:2;s:1:"c";i:3;}i:2;a:3:{s:1:"a";i:1;s:1:"b";i:2;s:1:"c";i:3;}}'
Fügen Sie dann den serialisierten Wert in die Datenbank ein.
Um das Array aus der Datenbank abzurufen, fragen Sie nach dem Feld und konvertieren Sie die gespeicherte Zeichenfolge zurück zu einem Array mit unserialize():
$query = "SELECT my_array_field FROM my_table"; $result = mysql_query($query); $row = mysql_fetch_assoc($result); $a = unserialize($row['my_array_field']);
Alternativ können json_encode() und json_decode() verwendet werden, um Arrays aus dem JSON-Format zu kodieren bzw. zu dekodieren.
Alternative Ansatz: Relationales Datenbankdesign
Anstatt Arrays in einem einzelnen Feld zu speichern, sollten Sie eine Umstrukturierung in Betracht ziehen Ihr Datenbankschema, um die Array-Elemente als einzelne Datensätze in zugehörigen Tabellen darzustellen. Dies ermöglicht eine ordnungsgemäße relationale Modellierung und effiziente Abfragen.
Betrachten Sie beispielsweise das Array:
$a = [ 1 => [ 'a' => 1, 'b' => 2, 'c' => 3 ], 2 => [ 'a' => 1, 'b' => 2, 'c' => 3 ], ];
Sie könnten separate Tabellen für die Array-Schlüssel und -Werte erstellen:
CREATE TABLE keys ( id INT UNSIGNED NOT NULL, a INT UNSIGNED NOT NULL, b INT UNSIGNED NOT NULL, c INT UNSIGNED NOT NULL, PRIMARY KEY (id) ); CREATE TABLE values ( id INT UNSIGNED NOT NULL, value INT UNSIGNED NOT NULL, key_id INT UNSIGNED NOT NULL, PRIMARY KEY (id), FOREIGN KEY (key_id) REFERENCES keys(id) );
Fügen Sie dann die Array-Elemente in die entsprechenden Tabellen ein:
INSERT INTO keys (id, a, b, c) VALUES (1, 1,2,3); INSERT INTO values (id, value, key_id) VALUES (1, 1, 1); INSERT INTO values (id, value, key_id) VALUES (2, 2, 1); INSERT INTO values (id, value, key_id) VALUES (3, 3, 1); INSERT INTO keys (id, a, b, c) VALUES (2, 1,2,3); INSERT INTO values (id, value, key_id) VALUES (4, 1, 2); INSERT INTO values (id, value, key_id) VALUES (5, 2, 2); INSERT INTO values (id, value, key_id) VALUES (6, 3, 2);
Dieser Ansatz ermöglicht eine effiziente Abfrage und Bearbeitung der darin enthaltenen Array-Daten eine relationale Datenbank.
Das obige ist der detaillierte Inhalt vonWie kann man Arrays in MySQL effizient speichern und abrufen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!