我知道这个问题,但我似乎无法解决,我希望这里有人能引导我朝着正确的方向前进,我想做的是检查一个用户是否已经提交了对一个问题的正确答案,然后将其与答案数据库进行比对,并将其插入到数据库中,只是为了阻止同一个问题被回答很多次,我是MYSQLi的新手,并不擅长,仍然在学习。
到目前为止,我得到的是:

$mysqli = new mysqli($host,$username,$password,$database);

if($mysqli -> connect_error)die($mysqli->connect_error);

$questionID = $_POST['id'];
$userAnswer = $_POST['answer'];
$userAnswer = strtolower(trim($userAnswer));
$questionValue = $_POST['qValue'];

$teamName = $_SESSION['user_email'];
$user_id = "SELECT t.teamID,t.questionGroupID FROM team as t WHERE t.teamName ='$teamName'";


$result2 = $mysqli->query($user_id);

    if ($result2->num_rows > 0) {
    // output data of each row
    while($row = $result2->fetch_assoc()) {

        $userID = $row["teamID"];
        }
    }


$query = "SELECT answers FROM answers WHERE questionID=?";
$statement = $mysqli->prepare($query);
$statement ->bind_param('i', $questionID);
$statement->execute();
$statement->bind_result($answer);


//checking the database to see if the current question is there from the current user/teamName
if ($result = mysqli_query($mysqli, "SELECT * FROM submissions where teamID='$teamName' and questionID='$questionID'")) {

    /* determine number of rows result set */
    $row_cnt = mysqli_num_rows($result);


    /* close result set */
    mysqli_free_result($result);
}


/* close connection */
mysqli_close($mysqli);


//checking to see if it returns a result
if(($row_cnt)= 0){
while ($statement->fetch()) {
    if ($answer != $userAnswer) {
        echo '<br><br><div class="alert alert-danger"><h5>
            <strong>Sorry!</strong> the answer is incorrect! Please Try again!.</h5>
            </div>';

        "<h3>Sorry the answer is incorrect! Please Try again!</h3><br>";
        //return to previous Page
        echo '<a href="./question.php?id=' . $questionID . '" class="btn btn-primary btn-block">Return to Question </a>';
        $statement->free_result();
        $sql = "INSERT INTO `submissions`(`submissionsID`, `teamID`, `questionID`, `answer`,`qValue`,`status`,`timestamp`) VALUES (null,'$teamName','$questionID','$userAnswer','0','Wrong',NOW())";

        if (mysqli_query($mysqli, $sql)) {

        } else {
            echo "Error: " . $sql . "<br>" . mysqli_error($mysqli);
        }


    } else {


        echo '<br><br><div class="alert alert-success"><h5>
  <strong>Success!</strong> Correct Answer, Good Luck with the Next </h5>
</div>';
        echo "<a href='questionList.php' class='btn btn-success btn-block'>Continue with other questions! </a>";

        $statement->free_result();

        //MySqli Insert Query

        $sql = "INSERT INTO `submissions`(`submissionsID`, `teamID`, `questionID`, `answer`,`qValue`,`status`,`timestamp`) VALUES (null,'$teamName','$questionID','$userAnswer','$questionValue','Correct',NOW())";

        if (mysqli_query($mysqli, $sql)) {

        } else {
            echo "Error: " . $sql . "<br>" . mysqli_error($mysqli);
        }


    }

}
}else{
        echo '<br><br><div class="alert alert-warning"><h5>
  <strong>Already Answered!</strong> Good Luck with the Next </h5>
</div>';
        echo "<a href='questionList.php' class='btn btn-warning btn-block'>Continue with other questions! </a>";
}

我已经用很多方法测试了它,我需要做的是运行一个检查,看看当前登录的用户是否已经正确地回答了问题id,我使用num_rows查看它是否大于0,如果大于0,他们已经回答了它。
所以我的问题是,我是否正确地处理了它,我应该采取什么方法?

最佳答案

这是个好办法。尝试使用

$row_cnt = $result->num_rows;

而不是
$row_cnt = mysqli_numrows($result);

另外,不要忘记,如果出现任何形式的查询错误,$row_cnt将等于-1,所以您应该在假设arn不是0的所有值都有效之前检查一下。

关于php - PHP检查表单是否已经使用num行提交,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33249487/

10-11 03:12