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


How to insert these multiple and single rows correctly in the database

我有一个由两个页面组成的应用程序。其中一个页面为会话生成一个3个字母的Id,它允许用户在文本框中键入他们需要的会话数量,并在文本框内键入会话所需的总标记。

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

示例:如果会话为"ABA",会话数为"1",总标记为"20",则该行如下所示插入会话数据库表中:

SessionId  TotalMarks
ABA         20

但我想遇到的问题如下:

假设我们有相同的会话ID"ABA",总分仍然是"20",但不同的是,用户希望会话数为3,然后我希望将其插入表行:

SessionId  TotalMarks
ABA1         20
ABA2         20
ABA3         20

正如您所看到的,我们有多个会话,它在每个会话旁边都包含一个数字,ABA1表示这是第一个会话,ABA2表示这是第二个会话,而ABA3表示它是第三个会话。正如用户所说的,总标记为"20",那么这将包括在所有会话行中。

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

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

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

以下是包含3个字母的SessionId、Number of Sessions文本框和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>

您应该需要这样的东西:

<?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);