我有一个表单,可以选择多个下拉列表。其他只是简单的下拉。
我的问题是如何在MySQL中保存数组的多个值?
对于以下示例:
furnitured
值将保存在MySQL列furnitured
但如何将common_amenitites
保存到MySQL common_amenities
列Heating,Internet
?
["furnitured"]=>
string(3) "yes"
["common_amenities"]=>
array(2) {
[0]=>
string(7) "Heating"
[1]=>
string(8) "Internet"
}
["outdoor"]=>
array(1) {
[0]=>
string(7) "Balcony"
}
答案 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分类,如果这是你想要的。
很难搜索互联网,游泳池等。公寓是游泳池吗?