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

时间:2012-03-31 11:34:55

标签: php mysql

我有一个由2页组成的应用程序。其中一个页面为会话生成一个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”,因此所有会话行都包含此标记。

所以我的问题是如何才能获得它,以便如果有多个会话,那么在每个sessionId旁边添加一个数字以及所有这些会话的总分数?但是,如果用户只想要1个会话数,那么它仍然与当前显示3个字母sessionId并且旁边没有数字的会话相同吗?

以下是在会话表中插入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,会话数量文本框和总标记文本框的表单代码:

     <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 个答案:

答案 0 :(得分:0)

这样的事情应该是你所需要的:

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