查询专业领域(存储为任何选定项目数组)不起作用。我正在尝试找出一种在编辑时获取注册农民的专业知识领域的方法。
我有两张桌子。数据库中的登记农民表和专业领域表。
专业领域存储在专业领域表中。
注册农民表包含注册农民的所有数据。
这是专业领域表:
area_of_expertise_id | id_number_of_the_farmer | areas_of_expertise | register_farmer_id |
---|---|---|---|
1 | 23232223 | 培养 | 1 |
2 | 23233453 | 收获 | 2 |
注册农民表:
register_farmer_id | name_of_the_farmer | age_of_the_farmer |
---|---|---|
1 | 无名氏 | 23 |
2 | 玛丽·多伊 | 34 |
我想在专业领域表中拥有一个注册农民 ID,就像在注册农民表中一样。我猜这将是一个外键。
我正在尝试查询某个农民的所有专业领域。查询到的数据将显示在其页面上以供编辑。
将数据存储在专业领域效果很好。我使用 foreach 循环来存储数据。现在的问题是查询数据。
请帮忙。
P粉0601123962024-04-05 12:46:13
您可能需要过度考虑您的表格设计,因为这看起来像经典的 1:n 关系(即使是 1:1,信息也不会改变)
尝试这样:
Farmers: ID (PRIMARY, AutoIncrement), name, age Expertises: farmerID (index), areaOfExpertise
插入如下(假设准备好的语句):
INSERT INTO `farmers` VALUES (NULL, ?, ?)`
然后,您从活动连接中检索“最后插入 ID”并将其放入第二个表中。
INSERT INTO `expertise` VALUES (?, ?)
要检索信息,您需要采取相反的方法。要检索所有农民,您可以使用查询
SELECT * FROM `farmers`
并且,要仅获取特定农民(假设您有 ID),您可以使用:
SELECT * FROM `farmers` WHERE ID = ?
无论您是查看所有农民还是仅查看一个农民,在评估信息时,您都将访问如下专业领域:
SELECT * FROM `expertise` WHERE farmerID = ?
这就是它的全部内容。 假设是 1:1 的关系(如“每个农民只有一个专业领域”),你也可以这样一次性写出来:
SELECT * FROM `farmers`, `expertise` WHERE ID = ? and farmerID = ID;