将多个输入值作为不同的行插入到不同的表中

时间:2017-01-07 11:11:57

标签: javascript php html mysql

我正在处理单个产品页面。数据库中有colors表来定义每个产品的颜色。它看起来像这样;

| key | product_id | color |
+-----+------------+-------+
|   1 |          4 | black |
|   2 |          7 | red   |
|   3 |          8 | blue  |
|   4 |          8 | black |
+-----+------------+-------+

我通过productController.php插入产品。没问题。此外,我想使用相同的自动增量ID将颜色插入到自己的表中。可以想象,表单中的每种颜色都有多个输入。什么是正确的方法,我应该使用哪些功能?

表格的简化视图如下。

<form>
  <div class="control-group">
    <label class="control-label">Product Name</label>
    <div class="controls">
      <input type="text" name="productname" />
    </div>
  </div>
  <div class="control-group">
    <label class="control-label">Colors</label>
    <div class="controls" id="color">
      <input type="text" name="colors[]" />
      <a href="javascript:void(0)" class="addcolor"> + Add</a>
    </div>
  </div>
  <div class="form-actions">
    <button type="submit" class="btn btn-success">Add Product</button>
  </div>
</form>

2 个答案:

答案 0 :(得分:1)

试试这个......

INSERTING into products表后,获取最后一个插入ID

$last_id = $db->insert_id;

$sql="";
$colours=$_POST['colours'];
foreach($colours as $colour)
{
    $sql.="INSERT INTO colours_table (product_id,color) values ('$last_id','$color');"
}

$db->query($sql);

当然采取所有针对sql注入的预防措施

答案 1 :(得分:0)

将数据库结构标准化为

color_master

| colorId | colorName |
+---------+-----------+
|     1   |   black   |
|     2   |   red     |
|     3   |   blue    |
+---------+-----------+

product_color

| product_color_id | product_id | color_id |
+------------------+------------+----------+
|        1         |     4      |    1     |
|        2         |     7      |    2     |
|        3         |     8      |    3     |
|        4         |     4      |    3     |
+------------------+------------+----------+

我建议您将<select>multiple选项一起使用。

 <select name="color[]" multiple></select>

在PHP结束时,您将在post中获得Color数组,然后可以在数据库中插入