如何在MySQL中保存这些会话数组?

时间:2015-11-12 20:18:30

标签: php mysql

我有一个表单,可以选择多个下拉列表。其他只是简单的下拉。

我的问题是如何在MySQL中保存数组的多个值?

对于以下示例:

furnitured值将保存在MySQL列furnitured

但如何将common_amenitites保存到MySQL common_amenitiesHeating,Internet

["furnitured"]=>
  string(3) "yes"
["common_amenities"]=>
  array(2) {
    [0]=>
    string(7) "Heating"
    [1]=>
    string(8) "Internet"
  }
["outdoor"]=>
  array(1) {
    [0]=>
    string(7) "Balcony"
  }

1 个答案:

答案 0 :(得分:0)

你可以按照你的建议这样做:

$sql = 'INSERT INTO `table` ( `furnitured` ) '
    .  'VALUES ( "' . implode( ',', $_REQUEST["common_amenities"] ) . '" );';

最好的方法是创建一个包含许多表的关系数据库,一个用于公寓,另一个用于具有不同属性,另一个用于属性。

TABLE apartment
    id INT,
    name VARCHAR

TABLE category
    id INT,
    name VARCHAR

TABLE attribute
    id INT,
    category_id INT,
    name VARCHAR

TABLE app_attr
    id INT,
    app_id INT,
    attr_id INT,

并添加数据:

INSERT INTO `category` ( `id`, `name` ) VALUES ( 1, 'furnitured' );
INSERT INTO `category` ( `id`, `name` ) VALUES ( 2, 'common_amenities' );
INSERT INTO `category` ( `id`, `name` ) VALUES ( 3, 'outdoor' );

INSERT INTO `attribute` ( `id`, `category_id`, `name` ) VALUES ( 1, 3, 'Balcony' );
INSERT INTO `attribute` ( `id`, `category_id`, `name` ) VALUES ( 2, 3, 'Pool' );
INSERT INTO `attribute` ( `id`, `category_id`, `name` ) VALUES ( 3, 3, 'Sea view' );
INSERT INTO `attribute` ( `id`, `category_id`, `name` ) VALUES ( 4, 2, 'Internet' );

INSERT INTO `apartment` ( `id`, `name` ) VALUES ( 1, 'Seaview villa' );
INSERT INTO `app_attr` ( `id`, `app_id`, `attr_id` ) VALUES ( 1, 1, 2 ); -- Has Pool
INSERT INTO `app_attr` ( `id`, `app_id`, `attr_id` ) VALUES ( 1, 1, 3 ); -- Has Sea view

现在您将公寓添加到公寓桌。每个属性都添加到关系数据库app_attr中。现在,您可以轻松过滤掉所有有互联网的公寓。

属性按category_id分类,如果这是你想要的。

很难搜索互联网,游泳池等。公寓是游泳池吗?