如果表单中只有一个值,如何插入多个值

时间:2015-05-11 18:08:29

标签: mysql arrays for-loop foreach multiple-insert

如果我需要保存的输入值只有一次,我需要知道如何在发票格式的数据库中插入或更新值?

我有一张发票表单,我在每一行中选择一个产品,最后我输入(user_id),其值为我需要与其余输入一起保存

就像每个例子一样,我在发票中选择:

10 tomatoes 
 5 garlics
 2 beans

最后有我的ID (user_id,而不是PRODUCTOS表的ID是唯一的)

Id=1

这是我的表的架构,以及直到现在如何保存或更新:

| cantidad   | nombre del producto |   Id  | 
+------------+---------------------+-------+
|     10     |   Tomatoes          |     1 |
|      5     |   garlics           |     0 |
|      2     |   beans             |     0 |

这是我需要保存或更新的内容:

| cantidad   | nombre del producto |   Id  | 
+------------+---------------------+-------+
|     10     |   Tomatoes          |     1 |
|      5     |   garlics           |     1 |
|      2     |   beans             |     1 |

以下是代码:

            $conn->beginTransaction();
            $sql = "INSERT INTO PRODUCTOS
            (cantidad, nombreProd, Id)
             VALUES ";
            $insertQuery = array();
            $insertData = array();
            foreach ($_POST['cantidad'] as $i => $cantidad) {
                $insertQuery[] = '(?, ?, ?)';
                $insertData[] = $_POST['cantidad'][$i];
                $insertData[] = $_POST['nombreProd'][$i];
                $insertData[] = $_POST['Id'][$i];
            }
            if (!empty($insertQuery)) {
                $sql .= implode(', ', $insertQuery);
                $stmt = $conn->prepare($sql);
                $stmt->execute($insertData);
            }
            $conn->commit();

谢谢

1 个答案:

答案 0 :(得分:1)

因此,您希望为每个产品记录插入一个用户ID。如果您发布print_r($_POST)的输出,我可以提供更好的答案,但基本上在您的foreach $POST循环中,保持用户ID为静态:

foreach ($_POST['cantidad'] as $i => $cantidad) {
  $insertQuery[] = '(?, ?, ?)';
  $insertData[] = $_POST['cantidad'][$i];
  $insertData[] = $_POST['nombreProd'][$i];
  $insertData[] = $_POST['Id']; //OR $insertData[] = $_POST['Id'][0], depending on $_POST array
            }