0

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.phpelse 如果找到查询,我希望它继续到yesno.php.

4

6 回答 6

1

exit当您设置 Location 标头时,您总是立即使用or跟随它die()

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

于 2012-05-25T08:41:00.780 回答
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
    

解决方法:检查$totalrows是否大于0

if ($totalrows > 0){
   header("Location: yesno.php");
} else {
   header("Location: notenrolled.php");
}
于 2012-05-25T09:01:59.007 回答
0

正确的做法是这样的:

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

else
 header("Location: notenrolled.php");
于 2012-05-25T08:44:40.543 回答
0

尝试这个

if($totalrows == 0)
{
    header("Location: notenrolled.php");
    die();
}
于 2012-05-25T08:45:04.510 回答
0
if ($totalrows > 0)
{   // has results
    header("Location: yesno.php");
    exit(0);
}
else
{   // no result
    header("Location: notenrolled.php");
    exit(0);
}
于 2012-05-25T08:47:28.313 回答
0

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

if (mysql_affected_rows() == 0){
  header("Location: notenrolled.php");
} else {
    header("Location: yesno.php");
}
于 2012-05-25T09:58:28.880 回答