![](/img/trans.png)
[英]How to save data from array (PHP) to MySQL table? (using MySQLi)
[英]PHP How to save data from array to mysql using laravel 5
我在POST中的'Cylinders'數據數組中得到一個數組:
Array
(
[serie] => Array
(
[0] => 1234
[1] => 3545
)
[seriesap] => Array
(
[0] => 1234234
[1] => 345345
)
[type] => Array
(
[0] => 4546
[1] => csdfwe
)
[admission] => Array
(
[0] => 04-05-2015
[1] => 04-05-2015
)
[invoice] => Array
(
[0] => fei76867
[1] => feiasodjf
)
)
現在,鍵內的字段:系列,類型,入場等不會改變,但這些鍵內的信息確實發生變化,我的意思是那里甚至可能有15個項目。
最后我需要保存到數據庫:
$cylinder = new Cylinder();
$cylinder->serie = ??;
$cylinder->seriesap = ??;
$cylinder->type = ??;
$cylinder->admission = ??;
$cylinder->invoice = ??;
$cylinder->save
我怎樣才能完成這項任務並保存所有氣缸?
我已經嘗試過所有可以想到的東西似乎沒什么用。
/ 編輯 /
這就是我到目前為止所做的事情:
$cyldata = $_POST['cylinder']; //this is the post from top.
$num_elements = 0;
while($num_elements < count($cyldata['serie'])){
$cylinder = new Cylinder();
$cylinder->serie = $cyldata['serie'][$num_elements];
$cylinder->type = $cyldata['type'][$num_elements];
$cylinder->admission = $cyldata['admission'][$num_elements];
$cylinder->seriesap = $cyldata['seriesap'][$num_elements];
$cylinder->save
$num_elements++;
}
但感覺很難看,所有這些豁免都不對。 如果你問我,那會很臟。
首先,您需要將輸入數據轉換為另一種格式:
$cyldata = $_POST['cylinder']; //this is the post from top.
$num_elements = 0;
$sqlData = array();
while($num_elements < count($cyldata['serie'])){
$sqlData[] = array(
'serie' => $cyldata['serie'][$num_elements],
'type' => $cyldata['type'][$num_elements],
'admission' => $cyldata['admission'][$num_elements],
'seriesap' => $cyldata['seriesap'][$num_elements],
'invoice' => $cyldata['invoice'][$num_elements], // you miss this field, aren't you?
'created_at' => Carbon\Carbon::now(), // only if your table has this column
'updated_at' => Carbon\Carbon::now(), // only if your table has this column
);
$num_elements++;
}
其次,使用Fluent查詢構建器執行批量插入:
DB::table('table_name')->insert($sqlData);
注意:如果您的表具有這些字段,則created_at
和updated_at
顯示在此處。 使用Eloquent模型時,這些字段會自動更新。 但是,我們不使用Eloquent,因此我們必須手動將值分配給這些字段。
我不知道是什么迫使你使用$_POST
全局數組來接收用戶的數據。
也許,這就是你想要的。
/**
* Store the form inputs in the table
*
* @param Request $request
*/
public function store( Request $request ) {
$data = Input::get();
for($i = 0; $i < count($data['serie']); $i++) {
$c = new Cylinder();
$c->serie = $data['serie'][$i];
$c->type = $data['type'][$i];
$c->admission = $data['admission'][$i];
$c->seriesap = $data['seriesap'][$i];
$c->save(); // fixed typo
}
}
因為您有一個數組要將數據插入數據庫,所以您可以嘗試使用模型中的create
方法:
Cylinder::create($array);
但它實際上需要數組的key
是數據庫中的field_name
。 或者您可以使用查詢生成器執行此操作:
DB::table('table_name')->insert($array);
並且需要將數組的key
設置為數據庫中的field_name
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.