基于此(如何将数组插入到带有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 with 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插入两行,其中包含单词Array
DocumentName列插入具有45和65($amount
阵列(的两行
请说明为什么在TransactionPartnerNameOrDescription列而不是数组值中插入单词array?
我想它与这个代码有关
$insertQuery = array();
$insertData = array();
foreach ($data as $row) {
$insertQuery[] = '(?, ?)';
$insertData[] = $amount;
$insertData[] = $row;
但我不明白每一行是干什么的。。。可能与的解释或类似示例有某种联系
后者使用CCD_ 3而不是CCD_。
在本例中,为Documentname列获取四行,值分别为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是什么?:[]做什么?但对我来说,这不是完全可以理解的。请告知
foreach ($_POST['date_day'] as $i => $date_day) {
$insertQuery[] = '(?, ?)';
$insertData[] = $_POST['amount'][$i];
$insertData[] = $date_day;
}
它是否简单地定义/设置$insertQuery和$insertData都是数组?
是的。
[]
是自PHP 5.4以来array()
的简写,因此您可以将其设为
$insertQuery = [];
$insertData = [];
或
$insertQuery = array();
$insertData = [];
或
$insertQuery = $insertData = [];