所以我有db table>“schools”和这个名为“metro”的表中的一列。 在“地铁”中,我有一些字符串,如“电台名称1,电台名称2,电台名称5”
我现在正在选择地铁站的搜索表单,所以我的代码如下:
<select name="categoryID">
<?
$metro_sql=mysql_query("SELECT metro FROM schools");
while($metro=mysql_fetch_array($metro_sql)){
$metro_pieces = explode(", ", $metro['metro']);
foreach (array_unique($metro_pieces, SORT_REGULAR) as $metro_all) {
echo "<option value=\"".$metro_all."\">".$metro_all."</option>\n ";
}
}
结果: 地铁站1 地铁站2 地铁站3 地铁站1 地铁站4 地铁站5 等等 我做错了什么? 附:对不起我的英文。
答案 0 :(得分:2)
存在逻辑问题 严格来说,你不能说“array_unique不起作用” 仅仅因为涉及十几个其他功能 而且你不知道这个函数是否提供了正确的数据。
您必须学习来调试您的代码 将调试输出添加到代码中并验证每个变量的状态,以查看它是否包含所需的数据。
从循环内的var_dump($metro);
开始
答案 1 :(得分:1)
我建议更好的数据库设计。
CREATE TABLE school (
school_id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(255)
);
CREATE TABLE station (
station_id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(255)
);
CREATE TABLE metro (
school_id INT NOT NULL,
station_id INT NOT NULL,
UNIQUE INDEX (school_id, station_id)
);
您可以在school
和station
中的工作站创建学校。当您需要将学校链接到电台时,您可以将记录添加到metro
。这使得database normalized。
当您需要获取电台时,您只需执行以下操作:
SELECT station.*
FROM metro
INNER JOIN station
ON metro.station_id = station.station_id
WHERE metro.school_id = $school_id