【问题标题】:Redirect based on URL parameter and if URL parameter is available in table row - PHP MySQL根据 URL 参数重定向,如果 URL 参数在表行中可用 - PHP MySQL
【发布时间】:2016-07-05 13:07:36
【问题描述】:
我有一张表,其中一个属性是版本。
表名是versions。
如果 URL 参数(也称为版本)为 NULL 或不存在,并且版本值不在我的表中,我想将用户重定向到默认页面。
到目前为止,我有这个。它不起作用。
$stonevar = isset($_GET['version']) ? $_GET['version'] : NULL;
if (empty($stonevar)) {
header("Location: index.php?version=default");
}
$id = $_GET['version'];
$result = $db->query("SELECT * FROM `versions` WHERE version='$id'");
while ($row = $result->fetch_assoc()) {
$varex = $row['version'];
}
if ($varex == NULL) {
header("Location: index.php?default");
}
【问题讨论】:
标签:
php
mysql
redirect
mysqli
url-parameters
【解决方案1】:
使用$result->num_rows统计结果,看看版本是否存在。
$stonevar = isset($_GET['version']) ? $_GET['version'] : NULL;
if (empty($stonevar)) {
header("Location: index.php?version=default");
}
$id = $_GET['version'];
$result = $db->query("SELECT * FROM `versions` WHERE version='$id'");
$total_num_rows = $result->num_rows;
if ($total_num_rows>0) {
while ($row = $result->fetch_assoc()) {
$varex = $row['version'];
}
}
else{
header("Location: index.php?default");
}
【解决方案2】:
你必须添加 exit();在标头函数之后。
试试类似的东西:
<?php
$stonevar = isset($_GET['version']) ? $_GET['version'] : NULL;
if (empty($stonevar)) {
header("Location: index.php?version=default");
exit();
}
$result = $db->query("SELECT * FROM `versions` WHERE version='$stonevar'");
while ($row = $result->fetch_assoc()) {
header("Location: index.php?".$row['version']);
exit();
/*
* or something you want to do if version exist
*/
}
header("Location: index.php?default");
exit();
?>