基于此(如何将数组插入带有 PHP 和 PDO 的单个 MySQL Prepared 语句)信息尝试插入多行。
输入(多行)
<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 可以看到
数组 ( [0] => 22 1 => 23 ) date_day 和 print_r
数组( [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 插入两行字数组
列 DocumentName 插入两行,分别为 45 和 65($amount
数组)
请告知为什么在 TransactionPartnerNameOrDescription 列中插入单词数组而不是数组值?
我想它与这段代码有关
$insertQuery = array();
$insertData = array();
foreach ($data as $row) {
$insertQuery[] = '(?, ?)';
$insertData[] = $amount;
$insertData[] = $row;
但我不明白每一行的作用......可能是一些带有解释或类似示例的链接
后者而不是$data = array_combine($date_day,$amount);
used $data = array_merge($date_day,$amount);
。
在这种情况下,为列 Document name 获取四行,值为 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 都是数组?
相关的东西在这里$variable ?: [] 做什么?但对我来说并不完全可以理解。请指教