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
}