我有一个表单,其中的一些下拉列表可以多选。其他的只是简单的下拉列表。
我的问题是,如何在MySQL中保存数组的多个值?
以下为示例:
furnitured值将保存在MySQL列furnitured中
但是如何将common_amenitites作为Heating,Internet保存到MySQL列common_amenities中呢?
["furnitured"]=>
string(3) "yes"
["common_amenities"]=>
array(2) {
[0]=>
string(7) "Heating"
[1]=>
string(8) "Internet"
}
["outdoor"]=>
array(1) {
[0]=>
string(7) "Balcony"
}发布于 2015-11-13 04:25:56
你可以按照你的建议这样做:
$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进行分类,如果您希望这样做的话。
很难搜索“网络,游泳池”来查找公寓里有游泳池吗?
https://stackoverflow.com/questions/33680537
复制相似问题