Mysql
 sql >> база данни >  >> RDS >> Mysql

Запазете PHP масив в MySQL?

Няма добро начин за съхраняване на масив в едно поле.

Трябва да прегледате вашите релационни данни и да направите съответните промени във вашата схема. Вижте примера по-долу за препратка към този подход.

Ако трябва запишете масива в едно поле, след което serialize() и unserialize() функции ще свършат работа. Но не можете да извършвате заявки за действителното съдържание.

Като алтернатива на функцията за сериализиране има също json_encode() и json_decode() .

Помислете за следния масив

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

За да го запишете в базата данни, трябва да създадете таблица като тази

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

За да работите със записите, можете да изпълнявате заявки като тези (и да, това е пример, внимавайте!)

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() функцията връща ресурс за mysql връзка

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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. 7 начина за намиране на дублиращи се редове, докато игнорирате първичния ключ в MySQL

  2. Как да промените размера на max_allowed_packet

  3. Как да отстраните проблеми с MySQL дефинера

  4. Как да получите достъп до MySQL с MySQL Root потребител

  5. Използване на SSH тунелиране като VPN алтернатива