php - 将多个输入与数据库进行匹配

标签 php mysql mysqli

我正在尝试制作一个自测试页面,其中 php 将输入与数据库进行匹配并检查答案是否正确。但到目前为止我不知道如何让它单独检查所有答案。到目前为止,我得到的脚本只有在所有答案都错误的情况下才有效。我该如何在 PHP 中执行此操作?

这是我到目前为止的代码:

    <?php 
    $host = "localhost";
    $user = "root";
    $pwd = "";
    $db_name = "flashcards";
    $link = mysqli_connect($host, $user, $pwd, $db_name)or die("cannot connect");

    $sql = mysqli_query($link, "SELECT * FROM Questions ORDER BY ID ASC LIMIT 25") or die(mysqli_error($link));
    echo "<form action='".$_SERVER['PHP_SELF']."' method='post'><table border='1'>";
    while ($rows = mysqli_fetch_assoc($sql))
        {
            echo "<tr><td value='".$rows['ID']."'>".$rows['Question']."</td><td><input type='text' name='Answer'></input></td></tr>";
        }  
    echo "</table><input type='submit' name='submit'>test</input></form>";
    if (isset($_POST['submit'])) 
    { 
        if ($_POST['Answer'] != $rows['Answer']) 
        {
        echo "wrong!";
        }
        else
        {
        echo "right";
        }
    }

    ?> 

最佳答案

问题出在这里:

<input type='text' name='Answer'></input>

问题在于所有答案输入都具有相同的“名称”,因此对于您回答的每个字段,值(答案字符串)都会被覆盖。

为了解决这个问题,您需要获得一系列答案,如下所示:

<input type='text' name='Answer[]'></input>

然后,迭代它:

foreach($_POST['Answer'] as $answer)
    if (isset($_POST['submit'])) 
        { 
            if ($answer != $rows['Answer'])
            //...

关于php - 将多个输入与数据库进行匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20517244/

相关文章:

PHP getimagesize 函数失败

php - 如何获得捆绑结果

MySQL 构建此查询的最佳方式?

php - 如何将 JSON 转换为 SQL 查询 - php

php - 我的 sql 查询失败但未返回任何 mySQL 错误

php - 检查是否使用 PDO 获取了最后一条消息

php - MySQL 通过代理 php 连接

mysql - 如何通过每天和每周定义的层次结构汇总事件类型(使用 SQL 或 ETL)

mysql - 根据结果​​从查询返回值

php - 在 PHP 中使用 foreach 语句打印 MySQL 行的方法?