基於this(How to insert an array into a single MySQL Prepared statement w/ PHP and PDO)信息試圖插入多行。需要php pdo implode陣列並在mysql中插入多行
輸入(多行)
<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
Array([0] => 45 1 => 65)amoun噸用的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
column DocumentName are in (45)和65($amount
數組)
請指教爲什麼在列TransactionPartnerNameOrDescription而不是數組插入數組值?
我想這是與此代碼
$insertQuery = array();
$insertData = array();
foreach ($data as $row) {
$insertQuery[] = '(?, ?)';
$insertData[] = $amount;
$insertData[] = $row;
相關,但我不明白的每一行不......可能是用來解釋或類似的例子
後期,而不是$data = array_combine($date_day,$amount);
一些鏈接$data = array_merge($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?但對我來說不完全可以理解。請諮詢
,而從這樣的:'$數據= array_combine($ date_day,$ amount);' – 2013-05-12 17:38:11
後者而不是$ data = array_combine($ date_day ,$金額);使用$ data = array_merge($ date_day,$ amount);.在這種情況下,對於列值爲22,23,45,46的列文檔名稱獲取四行。並且爲TransactionPartnerNameOrDescription列的字段數組 – user2360838 2013-05-12 17:40:22
該數量如何存儲到名爲'TransactionPartnerNameOrDescription'的字段以及日期 - 存儲到'DocumentName'中。字段名稱看起來很不一致 – 2013-05-12 17:43:09