[英]How to extract multiple array & insert data to database
How to extract below array & insert 3 data & 2 query 如何提取下面的数组并插入3个数据和2个查询
Extract this array & give me 2 row & 3 columns 提取此数组并给我2行3列
Array
(
[name] => Array
(
[0] => AAAAA
[1] => BBBBB
)
[number] => Array
(
[0] => 7878787878
[1] => 9898989898
)
[email] => Array
(
[0] => a@gmail.com
[1] => b@gmail.com
)
)
We need Below query by foreach loop 我们需要通过foreach循环进行以下查询
INSERT INTO `contact_person` SET customer_id='131',cp_name='AAAAA',cp_phone='7878787878',cp_email='a@gmail.com
INSERT INTO `contact_person` SET customer_id='131',cp_name='BBBBB',cp_phone='9898989898',cp_email='b@gmail.com'
consider a for loop like so: 考虑这样的for循环 :
$length = count($yourarray['name']);
$queries = new array();
for(i = 0; i < $length; i++) {
$queries[] = "INSERT INTO `contact_person` SET customer_id='131',
cp_name='" . $yourarray['name'][i] . "',
cp_phone='" . $yourarray['number'][i] . "',
cp_email='" . $yourarray['email'][i] " . "'";
}
This will create all the insert queries and put them in an array named $queries
这将创建所有插入查询,并将它们放入名为$queries
的数组中
NOTE: This code assumes you always have the same amount of names, numbers and emails 注意:此代码假定您始终具有相同数量的姓名,电话号码和电子邮件
$newArr = array();
foreach($arr as $key=>$val){
foreach($val as $k=>$v){
$newArr[$k][$key] = $v;
}
}
echo "<pre>"; print_r($newArr);
Now you can run your insert query in foreach()
like: 现在,您可以在foreach()
运行插入查询,如下所示:
foreach($newArr as $key=>$val){
echo "INSERT INTO `contact_person` SET customer_id='131',
cp_name='" . $val['name'] . "',
cp_phone='" . $val['number'] . "',
cp_email='" . $val['email'] " . "'";
echo "<br />";
}
You can summarize the array by using below function. 您可以使用以下函数汇总数组。
function getSummary($array){
$summary = [];
foreach( $array as $col => $data ){
foreach( $data as $key => $value ){
$summary[$key][$col] = $value;
}
}
return $summary;
}
And once you pass the summarize array to the below function you will get the queries. 然后,将汇总数组传递给以下函数后,您将获得查询。 I assume you need INSERT
query. 我假设您需要INSERT
查询。
function makeQueries($summary){
foreach( $summary as $data ) {
echo $sql = "INSERT INTO `contact_person` (customer_id, cp_name, cp_phone, cp_email) VALUES (131, '{$data['name']}', '{$data['number']}', '{$data['email']}');";
echo "<br>";
}
}
I believe these 2 functions will solve your problems 我相信这两个功能可以解决您的问题
Make customer_id in your database an autonumber so that it will automatically generate a customer_id on insert. 将数据库中的customer_id设置为自动编号,以便在插入时自动生成一个customer_id。
Also all fields are some text field in db 而且所有字段都是db中的一些文本字段
$arr = Array
(
'name' => Array
(
"AAAAA", "BBBBB"
),
'number' => Array
(
"7878787878", "9898989898"
),
'email' => Array
(
"a@gmail.com", "b@gmail.com"
)
);
$count = count($arr['name']);
$sql = "";
if ($count > 0) {
$sql = "INSERT INTO `contact_person` (cp_name, cp_phone, cp_email) VALUES ";
for ($i=0; $i < $count; $i++) {
$sql .= ($i+1==$count) ? "('".$arr['name'][$i]."', '".$arr['number'][$i]."', '".$arr['email'][$i]."'')" : "('".$arr['name'][$i]."', '".$arr['number'][$i]."', '".$arr['email'][$i]."''), ";
}
}
echo ($sql);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.