gpt4 book ai didi

php - 需要 php pdo 内爆数组并在 mysql 中插入多行

转载 作者:行者123 更新时间:2023-11-29 03:05:19 25 4
gpt4 key购买 nike

基于 this ( How to insert an array into a single MySQL Prepared statement w/ PHP and PDO ) 试图插入多行的信息。

输入(多行)

<input type="text" name="date_day[]">
<input type="text" name="date_day[]">

<input type="text" name="amount[]">
<input type="text" name="amount[]">

从输入中获取值

$date_day = $_POST['date_day'];
print_r($date_day);
echo ' date_day with print_r<br>';
$amount = $_POST['amount'];
print_r($amount);
echo ' amount with print_r<br>';

由于print_r可以看到

Array ( [0] => 22 1 => 23 ) date_day with print_r

Array ( [0] => 45 1 => 65 ) 数量与 print_r

然后从两个数组想创建一个数组

$data = array_combine($date_day,$amount);

然后插入代码

$sql = "INSERT INTO 2_1_journal (TransactionPartnerNameOrDescription, DocumentName) VALUES ";
$insertQuery = array();
$insertData = array();
foreach ($data as $row) {
$insertQuery[] = '(?, ?)';
$insertData[] = $amount;
$insertData[] = $row;
}

if (!empty($insertQuery)) {
$sql .= implode(', ', $insertQuery);
$stmt = $db->prepare($sql);
$stmt->execute($insertData);
}

结果是:

列 TransactionPartnerNameOrDescription 插入两行单词 Array

DocumentName 列插入两行 45 和 65($amount 数组)

请指教为什么在 TransactionPartnerNameOrDescription 列中插入单词 Array 而不是数组值?

我想这与这段代码有关

$insertQuery = array();
$insertData = array();
foreach ($data as $row) {
$insertQuery[] = '(?, ?)';
$insertData[] = $amount;
$insertData[] = $row;

但我不明白每一行的作用...可能是一些带有解释或类似示例的链接

后者使用 $data = array_merge($date_day,$amount); 而不是 $data = array_combine($date_day,$amount);

在这种情况下,为文档名称列获取四行,值为 22、23、45、46。为 TransactionPartnerNameOrDescription 列获取单词数组

更新其实事情比第一眼看上去的要简单

这是插入更多值的代码(作为其他人的示例;可能会有用)

$sql = "INSERT INTO 2_1_journal (RecordDay, RecordMonth, RecordYear, Amount) VALUES ";
$insertQuery = array();
$insertData = array();
foreach ($_POST['date_day'] as $i => $date_day) {
$insertQuery[] = '(?, ?, ?, ?)';
$insertData[] = $date_day;
$insertData[] = $_POST['date_month'][$i];
$insertData[] = $_POST['date_year'][$i];
$insertData[] = $_POST['amount'][$i];
}

还有一个问题

请指教是什么意思

$insertQuery = array();
$insertData = array();

它只是定义/设置 $insertQuery 和 $insertData 都是数组吗?

相关内容在这里What does $variable ?: [] do?但对我来说并不完全理解。求指教

最佳答案

foreach ($_POST['date_day'] as $i => $date_day) {
$insertQuery[] = '(?, ?)';
$insertData[] = $_POST['amount'][$i];
$insertData[] = $date_day;
}

Does it simply define/set that $insertQuery and $insertData both are arrays?

是的。

[] 是自 PHP 5.4 以来 array() 的简写,所以你可以做到这一点

$insertQuery = [];
$insertData = [];

$insertQuery = array();
$insertData = [];

$insertQuery = $insertData = [];

关于php - 需要 php pdo 内爆数组并在 mysql 中插入多行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16510141/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com