简体   繁体   English

如何提取多个数组并将数据插入数据库

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM