Es gibt nichts Gutes Möglichkeit, ein Array in einem einzelnen Feld zu speichern.
Sie müssen Ihre relationalen Daten untersuchen und die entsprechenden Änderungen an Ihrem Schema vornehmen. Im folgenden Beispiel finden Sie einen Verweis auf diesen Ansatz.
Wenn Sie das Array in einem einzelnen Feld speichern müssen , dann das serialize()undunserialize() reichen die Funktionen . Sie können jedoch keine Abfragen zum tatsächlichen Inhalt durchführen.
Alternativ zur Serialisierungsfunktion gibt es auch json_encode()und json_decode().
Betrachten Sie das folgende Array
$a = array(
1 => array(
'a' => 1,
'b' => 2,
'c' => 3
),
2 => array(
'a' => 1,
'b' => 2,
'c' => 3
),
);
Um es in der Datenbank zu speichern, müssen Sie eine solche Tabelle erstellen
$c = mysql_connect($server, $username, $password);
mysql_select_db('test');
$r = mysql_query(
'DROP TABLE IF EXISTS test');
$r = mysql_query(
'CREATE TABLE test (
id INTEGER UNSIGNED NOT NULL,
a INTEGER UNSIGNED NOT NULL,
b INTEGER UNSIGNED NOT NULL,
c INTEGER UNSIGNED NOT NULL,
PRIMARY KEY (id)
)');
Um mit den Datensätzen zu arbeiten, können Sie Abfragen wie diese ausführen (und ja, dies ist ein Beispiel, Vorsicht!).
function getTest() {
$ret = array();
$c = connect();
$query = 'SELECT * FROM test';
$r = mysql_query($query,$c);
while ($o = mysql_fetch_array($r,MYSQL_ASSOC)) {
$ret[array_shift($o)] = $o;
}
mysql_close($c);
return $ret;
}
function putTest($t) {
$c = connect();
foreach ($t as $k => $v) {
$query = "INSERT INTO test (id,".
implode(',',array_keys($v)).
") VALUES ($k,".
implode(',',$v).
")";
$r = mysql_query($query,$c);
}
mysql_close($c);
}
putTest($a);
$b = getTest();
Die connect()Funktion gibt eine MySQL-Verbindungsressource zurück
function connect() {
$c = mysql_connect($server, $username, $password);
mysql_select_db('test');
return $c;
}