2015-11-12 38 views
0

我有一個表格,可以選擇多個下拉列表。其他只是普通的下拉菜單。如何在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

你不想這樣做。創建一個相關的表,並將common_amenities分別保存到其自己的行中,並使用另一個表中的相關ID。 – AbraCadaver

+0

這裏是我的[Junction Table](http://stackoverflow.com/a/32620163)參數 – Drew

+0

@AbraCadaver請你詳細說明一下嗎?我的理解是爲每一個表格都有不同的表格,但我有大約30個不同的「節」,比如'common_amenities','appliance'等等。我的意思是我相信在'select'語句中我將不得不' 「這麼多桌子? – EnexoOnoma

回答

0

你可以做你的建議是這樣的:

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

最好的辦法是創建有很多的表關係數據庫中,一個是公寓,與不同的屬性和第三連接anotherone公寓與屬性。

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分類,如果這是您所希望的。

這是很難搜索'互聯網,游泳池'有公寓池嗎?

+0

我明白了,這件事會幫助我。但是,我發佈的是整個產出的一小部分。所以,我可能會在這裏展示3個樣本,但實際上大約是30個。o.0 – EnexoOnoma

+0

我會爲您添加另一個表格...... –

+0

將所有30個屬性類別添加到類別表中,現在您可以將300個在這兩個表(類別,屬性)中有很多屬性的組。然後每個公寓都有多個屬性(在app_attr表中)。要顯示公寓,請加入公寓,屬性和app_attr。 –