我根据他们所属的城市在我的网站上呈现MySQL的数据输出。因此,我的两个表名为login_users
和city_selection
。所有表都有一个名为city_id
的列。
当用户登录我的网站时,我会询问数据库设置了哪个city_id,然后创建$_SESSION['city_id']
然后我能够将带有WHERE
- 子句的MySQL查询编写到$_SESSION['city_id']
。
例如:SELECT firstname, lastname, city_name FROM students JOIN city_selection ON city_selection.city_id = students.city_id WHERE city_selection.city_id = '{$_SESSION['city_id']}'
这有效但现在我需要一些用户来显示一个或多个城市区域。我的第一个想法是创建一个名为region_selection
的新表,并将表city_selection
表中的外键添加到此表中。但是,我如何处理应该向一个或多个区域提供数据输出的登录用户的情况?我应该创建某种交叉引用表吗?
这是我的第一个PHP - MySQL网站,所以请耐心等待我!
答案 0 :(得分:0)
如果每个城市只属于一个地区,则可以使用列region_selection
创建region_id | region_name
表。然后,您在region_id
表格中添加city_selection
列,该列定义了城市所属的区域。
然后,您可以执行这样的查询来获取属于某个地区的学生:
SELECT firstname, lastname, city_name FROM students
JOIN city_selection ON city_selection.city_id = students.city_id
JOIN region_selection ON region_selection.region_id = city_selection.region_id
WHERE region_selection.region_name = YOUR_REGION_NAME
如果用户属于多个区域,您可以执行以下操作:创建表region_selection
,如上所示。然后创建一个包含student_regions
列的表格student_id | region_id
,以便在学生和地区之间建立链接。
然后查询如下:
SELECT firstname, lastname, city_name FROM students
JOIN student_regions ON student_regions.student_id = students.student_id
JOIN region_selection ON region_selection.region_id = student_regions.region_id
WHERE region_selection.region_name = YOUR_REGION_NAME