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

时间:2016-06-18 09:42:14

标签: php mysql pdo get 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);

用户在链接上显示他所居住的联邦州的名称,他将被重定向到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>";
}

如果用户选择“拜仁”,“柏林”或其他正常的联邦州,那一切都运作良好。但是,如果用户选择联邦州 - (连字符或减号),它就不起作用!没有链接!
如果我做了

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

联邦州的城镇只有在联邦政府没有分别减负( - )时才会显示。 我不知道如何使脚本工作。
请帮帮我,给我一个解决方案。

编辑1: 问题不是连字符, 问题是Baden-Würtemberg的ü, 我用“Nordrhein-Westfahlen”尝试了它并且它有效 但在开始时我使用了<meta charset="utf-8"/>

1 个答案:

答案 0 :(得分: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>";
}

试用此代码:

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

希望这对你有用......