如果查询不存在,则重定向到另一个页面

时间:2012-05-25 08:39:25

标签: php redirect web

即使输入值正确,此代码也只会重定向到notenrolled.php。如果输入的值正确,我希望它继续该过程。我的代码有问题吗?

<?php
//Setup connection to the database 
$connect = mysql_pconnect("localhost", "root", "") 
or die(mysql_error()); 

//Connect to the database 
mysql_select_db("dbgis", $connect) or die(mysql_error());

$query  = "SELECT * from tbl_student WHERE stud_id= '$stud_id' ";
$result = mysql_query($query);
$totalrows = mysql_num_rows($result);


while($row = mysql_fetch_array($result))
{
    header("Location: yesno.php");
}

if($totalrows != 0)
{
    header("Location: notenrolled.php");
}

?>

我尝试了die();,它似乎正在运行,因为它只是说yesno.php的重定向循环错误。所以我想我可能会把代码放在错误的.php页面中。

流程是这样的:我有一个guard.php页面,我可以使用页面中的搜索表单搜索query(stud_id)。然后我想检查查询是否存在,如果不存在,我希望它重定向到notenrolled.php否则如果找到查询,我希望它继续yesno.php

6 个答案:

答案 0 :(得分:1)

当您设置位置标头时,您始终会立即使用exitdie()关注它。

(只有当你真正了解自己在做什么时,才有可能不会立即使用它,但风险自负。)

答案 1 :(得分:0)

正确的方法是:

if($totalrows>0)
  header("Location: yesno.php");

else
 header("Location: notenrolled.php");

答案 2 :(得分:0)

试试这个

if($totalrows == 0)
{
    header("Location: notenrolled.php");
    die();
}

答案 3 :(得分:0)

if ($totalrows > 0)
{   // has results
    header("Location: yesno.php");
    exit(0);
}
else
{   // no result
    header("Location: notenrolled.php");
    exit(0);
}

答案 4 :(得分:0)

  1. 您不应仅使用while来评估是否有记录。

    while($row = mysql_fetch_array($result))
    {
      header("Location: yesno.php");
    }
    
  2. 由于编码,您的代码始终会重定向到notenrolled.php

    if($totalrows != 0)
    {
        header("Location: notenrolled.php");
    }
    //this block will always be true if your $totalrows is greater than 0
    
  3. 解决方案:检查$totalrows是否大于0

    if ($totalrows > 0){
       header("Location: yesno.php");
    } else {
       header("Location: notenrolled.php");
    }
    

答案 5 :(得分:0)

你可以使用php函数mysql_affected_rows来查看 SELECT 中受影响的行数,

if (mysql_affected_rows() == 0){
  header("Location: notenrolled.php");
} else {
    header("Location: yesno.php");
}