PHP 用数组函数插入

PHP INSERT with array function

我正在尝试使用数组键将数据插入 PHP 中。如果数据是单个且没有数组,我知道如何插入数据函数。但这是我一开始就遇到的问题 PHP。 我已经看到另一个 post 具有 `implode 功能,但我无法理解。

我正在尝试如果产品 123456 数量将插入 100 并且如果产品 123654 数量将 150 并且其他数据将不断插入。

数据库结构

---------------------------------------------------------------------------
| ID |  SKU    |   PRODUCT    |   QTY   |  SUBJECT          | ANY_COMMENT |
---------------------------------------------------------------------------
| 1  | 106101  |   123456     |   100   |  MY TEST SUBJECT  | MY_COMMENT  |
---------------------------------------------------------------------------
| 2  | 106101  |   123654     |   150   | MY TEST SUBJECT   | MY_COMMENT  |
---------------------------------------------------------------------------  

PHP数组

Array
(
    [subject] => MY TEST SUBJECT
    [sku] => 106101
    [product] => Array
        (
            [0] => 123456
            [1] => 123654
        )

    [qty] => Array
        (
            [0] => 100
            [1] => 150
        )

    [comment] =>MY_COMMENT
)

PHP 代码

$stmt = $con->prepare("INSERT INTO `table` SET(`SKU`, `PRODUCT`, `QTY`, `SUBJECT`, `ANY_COMMENT`) VALUES(:sku, :product, :qty, :subject, :comment)");

$stmt->execute();

您可以通过为每个 table 列绑定参数来做到这一点;分配常量值,然后在循环中迭代变化的值,使用一个数组中的键作为另一个数组的键,并在每次通过循环时执行语句。这样的事情应该有效:

// prepare statement
$stmt = $con->prepare("
INSERT INTO `table` (`SKU`, `PRODUCT`, `QTY`, `SUBJECT`, `ANY_COMMENT`) 
VALUES(:sku, :product, :qty, :subject, :comment)
");

// bind parameters
$stmt->bindParam(':sku', $sku, PDO::PARAM_INT);
$stmt->bindParam(':subject', $subject, PDO::PARAM_STR);
$stmt->bindParam(':comment', $comment, PDO::PARAM_STR);
$stmt->bindParam(':product', $product, PDO::PARAM_INT);
$stmt->bindParam(':qty', $qty, PDO::PARAM_INT);

// assign values and execute
$sku = $data['sku'];
$subject = $data['subject'];
$comment = $data['comment'];
foreach ($data['product'] as $key => $product) {
    $qty = $data['qty'][$key];
    $stmt->execute();
    echo "$product $qty\n";
}

请注意,您不需要采用 INSERT 语句格式的 SET