-1

したがって、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など。私が間違っているのは何ですか?ps私の英語でごめんなさい。

4

2 に答える 2

2

論理的な問題があります。
厳密に言えば、「array_uniqueが機能しない」とは言えません。
他にも12の機能が関係しているからです。
そして、この関数が正しいデータで提供されているかどうかはわかりません。

コードのデバッグを学ぶ必要があります。
コードにデバッグ出力を追加し、すべての変数の状態を確認して、目的のデータが含まれているかどうかを確認します。

var_dump($metro);ループの内側から開始します

于 2011-11-20T10:48:01.347 に答える
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ます。これにより、データベースが正規化されます。

その後、ステーションを取得する必要がある場合は、次の操作を行うだけです。

SELECT station.* 
FROM metro
INNER JOIN station
ON metro.station_id = station.station_id
WHERE metro.school_id = $school_id
于 2011-11-20T11:00:26.630 に答える