在MySQL数据库中存储Checkbox值的最佳方法是什么?

Eri*_*c T 2 php mysql

首先,以此页面为例:点击此处

如果您查看"设施"部分,则有3组复选框(单位功能,社区功能和租用的实用程序).

我的问题是:如何使用PHP制作3个数组变量(例如$ unit_features,$ community_features和$ utilities_included)来存储哪些框未被检入表中的3个相应字段?

更重要的是:如何以相同的数组格式从表中提取数据,以便查看/编辑/删除详细信息?

  • 注意,我已经尝试了无数次通过在表中使用单独的字段(作为tinyints)来做到这一点 - 但它变得笨重并且根本不优雅......我甚至想过制作一个对象类但又失败了. .

Dan*_*man 6

您在房产和设施之间有多对多的关系.要对此进行建模,您需要一个单独的表,而不是可变数量的列.

有一个表存储您的属性.

INSERT INTO property (id, address, square_footage...) VALUES (111, '123 Main St', 1234...)
Run Code Online (Sandbox Code Playgroud)

有一张桌子可存放所有可能的设施.

INSERT INTO amenities (id, type, description) VALUES (222, 'Unit Features', 'Air Conditioning');
Run Code Online (Sandbox Code Playgroud)

对于一个属性的每个设施,在表中插入一行与这两个相关:

INSERT INTO property_amenitities (property_id, amenity_id) VALUES (111, 222);
Run Code Online (Sandbox Code Playgroud)

当您想知道特定房产具有哪些设施时,只需SELECT该表中该房产钥匙的所有行.如果要打印所有便利设施的复选框,请SELECTamenities表格中执行LEFT OUTER JOINproperty_amenities表格.property_amenities表中具有空值的那些行是未选中的框.

相关阅读.你应该在他们破产之前从你当地的BORDERS拿起一本关于关系数据库的书:)