これに基づいて( 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の結果として見ることができます
配列 ( [0] => 22 1 => 23 ) date_day with print_r
配列 ( [0] => 45 1 => 65 ) print_r での金額
次に、2 つの配列から 1 つの配列を作成したい
$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 を含む 2 行に挿入されます
列 DocumentName は、45 と 65 の 2 つの行が挿入されます ($amount
配列)
配列値の代わりにTransactionPartnerNameOrDescription列にword Arrayが挿入される理由を教えてください。
私はそれがこのコードに関連していると思います
$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);
。
この場合、値が 22、23、45、46 のドキュメント名列の 4 つの行を取得します。また、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];
}
もう1つの質問
何を意味するかアドバイスしてください
$insertQuery = array();
$insertData = array();
$insertQuery と $insertData の両方が配列であることを定義/設定するだけですか?
関連するものはこちら$variable ?: [] は何をしますか? しかし、私には完全には理解できません。ご意見をお聞かせください