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>";
}
希望这对你有用...
用户说他住在哪个联邦州(德国)。 重要的代码真的很简单:
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>";
}
希望这对你有用...