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
。
我正在尝试使用数组键将数据插入 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
。