sql >> Database >  >> RDS >> Mysql

PHP-array opslaan in MySQL?

Er is geen goede manier om een ​​array in een enkel veld op te slaan.

U moet uw relationele gegevens onderzoeken en de juiste wijzigingen in uw schema aanbrengen. Zie onderstaand voorbeeld voor een verwijzing naar deze aanpak.

Als je moet sla de array op in een enkel veld en vervolgens de serialize() en unserialize() functies zullen het lukken. Maar u kunt geen query's uitvoeren op de daadwerkelijke inhoud.

Als alternatief voor de serialisatiefunctie is er ook json_encode() en json_decode() .

Beschouw de volgende array

$a = array(
    1 => array(
        'a' => 1,
        'b' => 2,
        'c' => 3
    ),
    2 => array(
        'a' => 1,
        'b' => 2,
        'c' => 3
    ),
);

Om het in de database op te slaan, moet je een tabel zoals deze maken

$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)
    )');

Om met de records te werken, kunt u dit soort zoekopdrachten uitvoeren (en ja, dit is een voorbeeld, pas op!)

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();

De connect() functie retourneert een mysql-verbindingsbron

function connect() {
    $c = mysql_connect($server, $username, $password);
    mysql_select_db('test');
    return $c;
}


  1. InMemory DUPLICATE Verwarring in Oracle RAC

  2. Select-resultaten converteren naar invoegscript - SQL Server

  3. Verouderde functies om uit uw gereedschapskist te halen - Deel 2

  4. Laravel:dynamisch verbinding maken met databases