1

次のスクリプトを使用してコードをチェックしているため、ユーザーが調査コードを入力すると、そのコードに関連付けられている調査が取得されます。調査を取得する部分は想定どおりに機能していますが、何らかの理由でエラー メッセージが表示されないようです。この投稿のフォームに間違ったコードを入力するか、コードをまったく入力しないと、空白のページしか表示されません。

<?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.'');
    }
}
?>
4

2 に答える 2

2

結果セットが空の場合、while ループをスキップするため、そこに到達することはありません。

代わりに、これを試してください。1 つのレコードに制限し (これは予想どおりです)、if...else代わりに を使用しますwhile(while は複数の結果が予想される場合にのみ必要です)。

$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>';
}
于 2012-12-04T13:53:52.520 に答える
1

結果が見つからないよりも返された行数がゼロの場合、適切なエラーメッセージを表示できます

試す

if (mysql_num_rows($result)<1){
     //error
 }
于 2012-12-04T13:56:12.327 に答える