Mysql 数据库不能使用连字符 (-)

Mysql Database doesn't work with hyphen (-)

用户说他住在哪个联邦州(德国)。 重要的代码真的很简单:

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);

用户点击显示他居住的联邦州名称的 link,他将被重定向到 FirstLogin.php,联邦州为 $_GET。
现在,问题:
在此站点上,用户应选择他居住的城镇。
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>";
}

如果用户选择 "Bayern"、"Berlin" 或其他正常的联邦州,则一切正常。但是,如果用户选择带有 -(连字符或减号)的联邦州,则它不起作用!没有 link 来了!
如果我让

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

只有当联邦州没有连字符减号 (-) 时,才会显示联邦州的城镇。
我不知道如何使脚本工作。
请帮助我并给我一个解决方案。

编辑 1: 问题不在于连字符, 问题是巴登-符腾堡州的 ü, 我已经用 "Nordrhein-Westfahlen" 试过了,它起作用了 但是一开始我用的是<meta charset="utf-8"/>

而不是这个:

$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>";
}

试试这个代码:

$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>";
}

希望这对你有用...