尝试将具有相似列字段的多个数据数组上传到一个 mysql 表


Trying to upload multiple arrays of data with similar column fields to one mysql table

我不知道怎么问这个问题。我正在使用php和mysql。我有多个数据数组,其中包含类似的信息,唯一的区别在于它们都有一个不同的类别ID,我通过隐藏的输入发送。我测试了使用 foreach 循环在 mysql 中构建和插入数组,但只有一个数据数组,它有效。但是,我不确定如何处理多个表,其中大多数列具有相同的名称并且 categoryID 是差异化因素。下面是我尝试发送的数据和一些列名称的示例。我正在尝试通过一种形式完成所有这些工作。

>Table 1 to insert
>day1    day2    score  nameID  money   other   categoryID
>10      10      20     1       100     yes     1
>5       5       10     22      50      sure    1
>Table 2 to insert
>score  nameID  money   other   categoryID
>44     5      100              2
>55     89     44       no      2
>Table 3 to insert
>day1    day2    score  nameID  money   other   categoryID
>100     100     200    67      1000    no      3
>55      55      110    5       600     blah    3

关于我应该尝试完成此操作的任何线索将不胜感激。添加有效的单个数组的代码示例。

<table width='550' id='openResults' border='1' cellpadding='0'  cellspacing='0'>
    <tr>
          <td width="150"><input size="5" type="text" name="score[]"></td>
          <td width="150"><input size="5" type="text" name="name[]"></td>
          <td width="150"><input size="5" type="text" name="rsAmount[]"></td>
          <td width="100">&nbsp;</td></tr>
</table>

foreach ($_POST['name'] as $key =>$name) {
    $score=$_POST['score'][$key];
    $rsamount=$_POST['rsAmount'][$key];
    echo "<tr><td width='50'>$score</td><td width='50'>$name</td><td width='50'>$rsamount</td></tr>";
    $sql = "INSERT INTO testRows (score, name, rsAmount) VALUES ('$score', '$name', '$rsamount')";
    $result2 = mysql_query($sql) or die ("Error in query: $sql. " . mysql_error());
 }
抱歉,

所有这些都未经测试,因此您可能需要摆弄它,但希望它有所帮助......

尝试重新格式化输入以将 id 包含在索引中,如下所示:

      <td width="150"><input size="5" type="text" name="score[1][]"></td>
      <td width="150"><input size="5" type="text" name="name[1][]"></td>
      <td width="150"><input size="5" type="text" name="rsAmount[1][]"></td>

然后,当您循环时,您可以添加第二个级别以从上面的 [1] 中获取类别 ID:

foreach ($_POST['name'] as $categoyId => $data) {
  foreach ($data as $key =>$placeholder) {
    $name=$_POST['name'][$categoryId][$key];
    $score=$_POST['score'][$categoryId][$key];
    $rsamount=$_POST['rsAmount'][$categoryId][$key];
    echo "<tr><td width='50'>$score</td><td width='50'>$name</td><td width='50'>$rsamount</td></tr>";
    switch ($categoyId) {
       case 1:
          $sql = "INSERT INTO table_1 (score, name, rsAmount) VALUES ('$score', '$name', '$rsamount')";
          break;   
       case 2:
          $sql = "INSERT INTO table_2 (score, name, whatver) VALUES ('$score', '$name', '$rsamount')";
          break;   
       case 3:
          $sql = "INSERT INTO table_3 (score, name, somethingElse) VALUES ('$score', '$name', '$rsamount')";
          break;
       defaut: 
           $sql = null;
    }
    if ($sql) {
       $result2 = mysql_query($sql) or die ("Error in query: $sql. " . mysql_error());
    }
  } 
}