sql >> Database teknologi >  >> RDS >> Mysql

Vil du gemme PHP-array til MySQL?

Der er ikke noget godt måde at gemme et array i et enkelt felt.

Du skal undersøge dine relationelle data og foretage de relevante ændringer i dit skema. Se eksemplet nedenfor for en reference til denne tilgang.

Hvis du skal gem arrayet i et enkelt felt og derefter serialize() og unserialize() funktioner vil gøre tricket. Men du kan ikke udføre forespørgsler om det faktiske indhold.

Som et alternativ til serialiseringsfunktionen er der også json_encode( ) og json_decode() .

Overvej følgende array

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

For at gemme den i databasen skal du oprette en tabel som denne

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

For at arbejde med posterne kan du udføre forespørgsler som disse (og ja, dette er et eksempel, pas på!)

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

connect() funktion returnerer en mysql-forbindelsesressource

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


  1. PostgreSQL Connection Pooling:Del 4 – PgBouncer vs. Pgpool-II

  2. Gem SQLite-forespørgselsresultater i en tekstfil

  3. Definering af en en-til-en relation i SQL Server

  4. ORA-01653:ude af stand til at udvide tabellen med i tablespace ORA-06512