Php 空MySQL查询结果未按预期工作?

Php 空MySQL查询结果未按预期工作?,php,mysql,if-statement,header,Php,Mysql,If Statement,Header,我使用下面的脚本检查代码,因此当用户输入调查代码时,他们将获得与该代码关联的调查。获取调查的部分按预期工作,但由于某些原因,我似乎无法获得错误消息。如果我输入了一个错误的代码或者没有代码,那么我得到的只是一个空白页 <?php $con = mysql_connect("myhost","myuser","mypassword; if (!$con) { die('Could not connect: ' . mysql_error()); } // Select mysql d

我使用下面的脚本检查代码,因此当用户输入调查代码时,他们将获得与该代码关联的调查。获取调查的部分按预期工作,但由于某些原因,我似乎无法获得错误消息。如果我输入了一个错误的代码或者没有代码,那么我得到的只是一个空白页

<?php
$con = mysql_connect("myhost","myuser","mypassword;
if (!$con) {
    die('Could not connect: ' . mysql_error());
}

// Select mysql db
mysql_select_db("mydb", $con);

$questionaireID = $_POST['questionaireID'];

$result = mysql_query("SELECT * FROM itsnb_questionaire WHERE questionaireID='$questionaireID'") or die(mysql_error());
while($row = mysql_fetch_array($result)) {
    if (empty($row['questionaireID'])) {
        echo '<h2>Sorry I cant find a quiz with that code, please recheck your code.</h2>';
    } else {
        $url = $row['questionaireurl'];
        header('Location: '.$url.'');
    }
}
?>

它永远不会到达那里,因为如果resultset为空,它将跳过while循环

请尝试此操作,限制为1条记录(这是您所期望的),并使用
if…else
而不是
while
(while仅在需要多个结果时才需要):

$sql=“选择*
来自itsnb_调查问卷
其中QuestionAirId='{$QuestionAirId}'
限制1”;
$result=mysql\u query($sql)或die(mysql\u error());
if($row=mysql\u fetch\u数组($result)){
$url=$row['questionaireurl'];
标题('位置:'.$url');
}否则{
echo‘抱歉,我找不到带有该代码的测验,请重新检查您的代码。’;
}

如果返回的行数为零,则未找到结果,因此可以显示相应的错误消息

试一试


if(mysql\u num\u rows($result)这是因为mysql\u fetch\u数组的第一个调用返回FALSE,这意味着while循环的内容永远不会执行(当查询返回空集时)。看看像mysql_num_rows这样的函数,它可以告诉您返回集包含多少行。看起来您没有关闭$con语句中的括号。非常感谢您的帮助!就这样:-)正在等待时间限制:-)您能解释一下答案中的代码吗?为什么要尝试此代码?如果返回的行数为零,则尚未找到结果,因此可以显示相应的错误消息
$sql = "SELECT * 
        FROM itsnb_questionaire 
        WHERE questionaireID = '{$questionaireID}'
        LIMIT 1";
$result = mysql_query($sql) or die(mysql_error());
if ($row = mysql_fetch_array($result)) {
    $url = $row['questionaireurl'];
    header('Location: '.$url.'');
} else {
    echo '<h2>Sorry I cant find a quiz with that code, please recheck your code.</h2>';
}
if (mysql_num_rows($result)<1){
     //error
 }