即使输入值正确,此代码也只会重定向到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
。
答案 0 :(得分:1)
当您设置位置标头时,您始终会立即使用exit
或die()
关注它。
(只有当你真正了解自己在做什么时,才有可能不会立即使用它,但风险自负。)
答案 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)
您不应仅使用while
来评估是否有记录。
while($row = mysql_fetch_array($result))
{
header("Location: yesno.php");
}
由于编码,您的代码始终会重定向到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");
}
答案 5 :(得分:0)
你可以使用php函数mysql_affected_rows来查看 SELECT 中受影响的行数,
if (mysql_affected_rows() == 0){
header("Location: notenrolled.php");
} else {
header("Location: yesno.php");
}