Php 如何在每行中显示答案和文本输入

Php 如何在每行中显示答案和文本输入,php,html,mysql,Php,Html,Mysql,关于如何在php代码中显示正确的表布局,我有一个问题: 我想在表格中显示答案及其文本输入。。现在显示如下: Question Answer Marks Per Answer What is 2+2 B (text input) Name the 3 hobbits? BCE (text input) 我想更改表的显示,使其如下所示: Question

关于如何在php代码中显示正确的表布局,我有一个问题:

我想在表格中显示答案及其文本输入。。现在显示如下:

 Question             Answer        Marks Per Answer     
 What is 2+2          B             (text input)         
 Name the 3 hobbits?  BCE           (text input)  
我想更改表的显示,使其如下所示:

 Question             Answer        Marks Per Answer 
 What is 2+2?         B             (text input)
 Name the 3 Hobbits?  B             (text input)                   
                      C             (text input)
                      E             (text input)
正如您从新显示屏上看到的。我希望每个问题的每个答案都显示在自己的一行中,而不是每个问题的所有答案都显示在一行中,而这正是它目前正在做的。 我希望文本输入也显示在自己的行中,如答案: 我的问题是,如何实现第1点和第2点,使其与新布局相匹配

以下是当前显示的代码:

$assessment = $_SESSION['id'] . $sessionConcat;

include('connect.php');

   $query = "SELECT q.QuestionId, q.QuestionContent, GROUP_CONCAT(DISTINCT Answer ORDER BY Answer SEPARATOR '') AS Answer, 
   FROM Question q
   INNER JOIN Answer an ON q.QuestionId = an.QuestionId
   WHERE s.SessionName = ?
   ";

        // prepare query
        $stmt=$mysqli->prepare($query);
        // You only need to call bind_param once
        $stmt->bind_param("s", $assessment);
        // execute query
        $stmt->execute(); 


        // This will hold the search results
        $searchQuestionId = array();
        $searchQuestionContent = array();
        $searchAnswer = array();


        // Fetch the results into an array

        // get result and assign variables (prefix with db)
        $stmt->bind_result($dbQuestionId, $dbQuestionContent, $dbAnswer);
        while ($stmt->fetch()) {
        $searchQuestionContent[] = $dbQuestionId;
        $searchQuestionContent[] = $dbQuestionContent;
        $searchAnswer[] = $dbAnswer;
        }   

        ?>      

        </head>

        <body>


        <form id="QandA" action="<?php echo htmlentities($_SERVER['PHP_SELF']); ?>" method="post">

        <?php 

        echo "<table border='1' id='markstbl'>
        <tr>
        <th class='questionth'>Question</th>
        <th class='answerth'>Answer</th>
        <th class='answermarksth'>Marks per Answer</th>
        </tr>\n";

        foreach ($searchQuestionContent as $key=>$question) {
        echo '<td>'.htmlspecialchars($question).'</td>' . PHP_EOL;
        echo '<td class="answertd">'.htmlspecialchars($searchAnswer).'</td>' . PHP_EOL; 
        echo '<td class="answermarkstd"><input class="individualMarks" name="answerMarks[]" id="individualtext" type="text" "/></td>' . PHP_EOL;
        }
        echo "</table>" . PHP_EOL;

        ?>

        </form>

        </body>
答题表:

AnswerId (auto)  QuestionId   Answer
1                 1           B   
2                 2           B
3                 2           C
4                 2           E

看起来您可以去掉分组子句。您可能希望按问题id排序,因此同一问题的所有答案都将一起给出

SELECT q.QuestionId, q.QuestionContent, an.Answer
FROM Question q
INNER JOIN Answer an ON q.QuestionId = an.QuestionId
WHERE s.SessionName = ?
ORDER BY q.QuestionId, an.Answer

关于数据库模式的更多信息会有所帮助。另外,在哪里使用绑定参数s?你是否包含了你的整个查询?让我稍微编辑一下代码和问题,这样你和其他人会更容易给我10个mins@slashingweapon还有其他人,问题已经更新到包含更新代码,更新的示例和数据库表的外观示例您在使用什么htmlspecialchars@Sami我做了研究,它指出,如果我将数据库中的数据回送到HTML中,那么就使用htmlspecialchar,这样它就不会转义到HTML中
SELECT q.QuestionId, q.QuestionContent, an.Answer
FROM Question q
INNER JOIN Answer an ON q.QuestionId = an.QuestionId
WHERE s.SessionName = ?
ORDER BY q.QuestionId, an.Answer