Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Lưu mảng PHP vào MySQL?

Không có tốt cách lưu trữ một mảng vào một trường duy nhất.

Bạn cần kiểm tra dữ liệu quan hệ của mình và thực hiện các thay đổi thích hợp cho giản đồ của mình. Xem ví dụ bên dưới để tham khảo cách tiếp cận này.

Nếu bạn phải lưu mảng vào một trường duy nhất rồi đến serialize() unserialize() các chức năng sẽ thực hiện thủ thuật. Nhưng bạn không thể thực hiện các truy vấn về nội dung thực tế.

Để thay thế cho chức năng tuần tự hóa, còn có json_encode() json_decode() .

Hãy xem xét mảng sau

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

Để lưu nó trong cơ sở dữ liệu, bạn cần tạo một bảng như thế này

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

Để làm việc với các bản ghi, bạn có thể thực hiện các truy vấn như sau (và vâng, đây là một ví dụ, hãy cẩn thận!)

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() hàm trả về tài nguyên kết nối mysql

Hàm
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. Kích thước truy vấn tối đa cho mysql là bao nhiêu?

  2. Cài đặt Máy chủ Web trong Windows XP với Apache2, PHP5 và MySQL4 - Phần 4

  3. cập nhật giá trị cột với cột của bảng khác dựa trên điều kiện

  4. Cách xóa cơ sở dữ liệu trong MySQL / MariaDB

  5. 5 công cụ giám sát MySQL hàng đầu