Php 如何在数据库中正确插入这些多行和单行

Php 如何在数据库中正确插入这些多行和单行,php,mysql,Php,Mysql,我有一份由两页组成的申请。其中一个页面为会话生成一个3个字母的Id,它允许用户在文本框中键入所需的会话数,并在文本框中键入会话所需的总分 当提交该页面时,它将进入下一页,同时在数据库中插入这些详细信息。现在,如果用户只需要1个会话,那么将详细信息插入数据库表就可以完美地工作。下面是一个例子: 示例:如果会话为“ABA”,会话数为“1”,总分为“20”,则在会话数据库表中按如下方式插入行: SessionId TotalMarks ABA 20 但我想遇到的问题如下: 假设我

我有一份由两页组成的申请。其中一个页面为会话生成一个3个字母的Id,它允许用户在文本框中键入所需的会话数,并在文本框中键入会话所需的总分

当提交该页面时,它将进入下一页,同时在数据库中插入这些详细信息。现在,如果用户只需要1个会话,那么将详细信息插入数据库表就可以完美地工作。下面是一个例子:

示例:如果会话为“ABA”,会话数为“1”,总分为“20”,则在会话数据库表中按如下方式插入行:

SessionId  TotalMarks

ABA         20
但我想遇到的问题如下:

假设我们有相同的会话ID“ABA”,总分仍然是“20”,但区别在于用户希望会话数为3,然后我希望在表行中插入this:

SessionId  TotalMarks

ABA1         20
ABA2         20
ABA3         20
您可以看到,由于我们有多个会话,它在每个会话旁边都包含了一个数字,ABA1表示这是第一个会话,ABA2表示这是第二个会话,ABA3表示这是第三个会话。如用户所述,总分为“20”,则这包括所有这些会话行

所以我的问题是,如果有多个会话,如何获得它,然后在每个会话ID旁边添加一个数字,以及所有会话的总分?但是,如果用户只需要1个会话,它仍然会像当前一样显示3个字母的sessionId,旁边没有数字

以下是用于在会话表中插入SessionId和TotalMarks的插入值代码:

$sql="INSERT INTO Session (SessionId, TotalMarks)
VALUES
(' ". mysql_real_escape_string( $_POST['id'] ) . "',' ". mysql_real_escape_string( $_POST['textMarks'] ) . "')";

mysql_query($sql);
以下是包含3个字母的SessionId、Sessions Number文本框和Total Marks文本框的表单代码:

     <form action="QandATable.php" method="post" id="sessionForm">

             <p><strong>1: Your Session ID: </strong><?php echo $id; ?></p>
             <input type='hidden' name='id' value='<?php echo $id; ?>' />

  <p><strong>2: Number of Sessions you Require:</strong> <input type="text" id="sessionNo" name="sessionNum"/></p>

    <p><strong>3: Total Marks: </strong><input type="text" id="txtMarks" name="textMarks" /></p>
</form>

1:您的会话ID:


您需要这样的东西:

<?php

  // Reset the array
  $insert = array();

  // Iterate over the number of desired sessions and add the relevant INSERT VALUES
  for ($i = 1, $n = $_POST['sessionNum']; $i <= $n; ++$i)
  {
    $insert[] = "'" . mysql_real_escape_string($_POST['id']) . $i . "', '" . mysql_real_escape_string($_POST['textMarks']) . "'";
  }

  // Create the SQL string
  $sql = "INSERT INTO `Session` (`SessionId`, `TotalMarks`) VALUES (" . implode('), (', $insert) . ")";

  // Perform the query
  mysql_query($sql);

为什么不增加一列“numberOfSessions”,这样你就可以拥有ABA | 20 | 3?因为如果有一个会话,那么我不想在从下拉菜单或类似的东西中选择它时显示ABA1,我仍然看不出问题。数据库中根本不会有ABA1。如果与ABA只有一个会话,则行将如下所示:ABA | 20 | 1,如果有3个会话,则行将如下所示:ABA | 20 | 3。在这两种情况下都没有ABA1或ABA3,所以你可以在下拉列表中显示ABA。是的,但是如果它只显示ABA,并且有3个会话,如果我想让一个类将不同的会话转到另一个类,如果它只显示ABA,他们如何知道选择哪个会话?我会测试这个,然后返回给你,谢谢你的回答:)你是个天才,谢谢你的帮助,效果很好:)