2016-06-18 9 views
0

ユーザは、彼がどの連邦政府(ドイツ)に住んでいるかを伝えます。 重要なコードは本当に簡単です:Mysqlデータベースがハイフン( - )で動作しない

echo "<a href=\"FirstLogin.php?Name=Baden-Würtemberg\">Baden-Würtemberg</a><br>"; 
     echo "<a href=\"FirstLogin.php?Name=Bayern\">Bayern</a><br>"; 
     echo "<a href=\"FirstLogin.php?Name=Berlin\">Berlin</a><br>"; 
     echo "<a href=\"FirstLogin.php?Name=Brandenburg\">Brandenburg</a><br>"; 
     echo "<a href=\"FirstLogin.php?Name=Bremen\">Bremen</a><br>"; 
... 
     exit (0); 

彼が住んでいる連邦国家の名称を示し、彼は$ _GETとして連邦国家でFirstLogin.phpにリダイレクトされます、リンク上のユーザclics 。
問題:
このサイトでは、ユーザーは彼が住んでいる町を選択する必要があります。
mysqlデータベースでは、すべての町が保存されます。ユーザーが選択した連邦国家である
すべての町は、表示されます:

$FederalState = $_GET["Name"]; 
$sql = "SELECT Towns FROM Towns WHERE Federal State = '$FederalState'"; 
    foreach ($pdo->query($sql) as $row) { 
     $Towns[] = $row["Towns"]; 
    } 
for ($i=0;$i<count($Towns);$i++) { 
    $Town = $Towns[$i]; 
    echo "<a href=\"NextPage.php?Name=$Town\">$Town</a><br>"; 
} 

、ユーザが選択した「バイエルン」、「ベルリン」、または他の正常な連邦国家ならば、すべてがうまく機能していること。しかし、ユーザーが - (ハイフンまたはマイナス)の連邦国家を選択した場合、それは機能しません!リンクはありません!
そして、私は

foreach ($pdo->query($sql) as $row) { 
echo $row["Staedte"]."<br>"; 
} 

を作る場合は連邦国家はそれぞれハイフンを持ってマイナスれていない場合、連邦国家の町にのみ表示されます( - )。
スクリプトを動作させるために何をすべきかわかりません。
私を助け、私に解決策を教えてください。

EDIT 1: 問題はハイフンではない、 問題はバーデン・ヴュルテンベルクでüあり、 私は「ノルトライン・Westfahlen」でそれを試してみましたが、それは を働いていた。しかし、私は<meta charset="utf-8"/>

を使用している冒頭にこれに代えて
+1

SQLインジェクション –

+1

をよく読んでくださいは、そのないハイフンかもしれませんが、 'ü'は、問題の原因は? –

+0

テューリンゲン( "テューリンゲン")の町とのウムラウト問題かどうかを確認してください。 WHERE句のフィールドをバックティックで囲む必要があります。しかし、このエラーが原因で英語に翻訳された可能性があります。フィールド名は「Staedte」と「towns」です。 SQLインジェクションに関するEdのコメントを無視しないでください! – user5329483

答えて

0

$FederalState = $_GET["Name"]; 
$sql = "SELECT Towns FROM Towns WHERE Federal State = '$FederalState'"; 
    foreach ($pdo->query($sql) as $row) { 
     $Towns[] = $row["Towns"]; 
    } 
for ($i=0;$i<count($Towns);$i++) { 
    $Town = $Towns[$i]; 
    echo "<a href=\"NextPage.php?Name=$Town\">$Town</a><br>"; 
} 

は、このコードを試してみてください210

$pdo->exec("set names utf8"); $FederalState = urldecode ($_GET["Name"]); $sql = "SELECT Towns FROM Towns WHERE Federal State = '$FederalState'"; foreach ($pdo->query($sql) as $row) { $Towns[] = $row["Towns"]; } for ($i=0;$i<count($Towns);$i++) { $Town = $Towns[$i]; echo "<a href=\"NextPage.php?Name=$Town\">$Town</a><br>"; } 

これはあなたのために働く希望...

+0

URLをデコードする理由を理解できません。$ _GETはすでにデコードされていますが(http://php.net/manual/de/function.urldecode.php)、$ pdo-> exec( "名前の設定utf8 ");始まりでそれは動作します!ありがとう! – Korne127

関連する問題