duandang2838
2015-03-22 14:04
浏览 75
已采纳

Codeigniter多维数组插入数据库

Hello im trying to insert a multidimensional array into mysql using codeigniter. Im having some trouble getting the values to enter correctly. Here is how the multidimensional array looks

Array ( [2] => Array ( [A] => FName 2 [B] => LName 2 [C] => PhoneNo 2 [D] => FaxNo 2 ) [3] => Array ( [A] => FName 3 [B] => LName 3 [C] => PhoneNo 3 [D] => FaxNo 3 ) [4] => Array ( [A] => FName 4 [B] => LName 4 [C] => PhoneNo 4 [D] => FaxNo 4 ) [5] => Array ( [A] => FName 5 [B] => LName 5 [C] => PhoneNo 5 [D] => FaxNo 5 ) [6] => Array ( [A] => FName 6 [B] => LName 6 [C] => PhoneNo 6 [D] => FaxNo 6 ) [7] => Array ( [A] => FName 7 [B] => LName 7 [C] => PhoneNo 7 [D] => FaxNo 7 ) [8] => Array ( [A] => FName 8 [B] => LName 8 [C] => PhoneNo 8 [D] => FaxNo 8 ) [9] => Array ( [A] => FName 9 [B] => LName 9 [C] => PhoneNo 9 [D] => FaxNo 9 ) ) 

Here is what i've tried doing

function insertfiles($arr_data)
{
    foreach ($arr_data as $value) {
        foreach($value as $key => $a){
            $data = array(
                   'Firstname' => $a,
                   'Lastname' => $a,
                   'Phone'=>$a,
                   'Fax' =>$a
                );

                $this->db->insert('test', $data); 
        }
    }
}

Im sure im messing this up horribly, it is inserting the values into the database but it's inserting them as follows

since it wont let me upload an image im providing a link to view this image online. http://psadatadesign.com/img/test-bmp.jpg

any help would be appreciated. As im trying to figure out what i have done wrong.

图片转代码服务由CSDN问答提供 功能建议

您好我试图使用codeigniter将多维数组插入到mysql中。 我无法正确输入值。 以下是多维数组的外观

 数组([2] =>数组([A] => FName)  2 [B] => LName 2 [C] => PhoneNo 2 [D] => FaxNo 2)[3] =>数组([A] => FName 3 [B] => LName 3  [C] => PhoneNo 3 [D] => FaxNo 3)[4] =>数组([A] => FName 4 [B] => LName 4 [C] => PhoneNo 4 [  D] => FaxNo 4)[5] =>数组([A] => FName 5 [B] => LName 5 [C] => PhoneNo 5 [D] => FaxNo 5)[  6] =>数组([A] => FName 6 [B] => LName 6 [C] => PhoneNo 6 [D] => FaxNo 6)[7] =>数组([A]  ] => FName 7 [B] => LName 7 [C] => PhoneNo 7 [D] => FaxNo 7)[8] =>数组([A] => FName 8 [B]  => LName 8 [C] => PhoneNo 8 [D] => FaxNo 8)[9] =>数组([A] => FName 9 [B] => LName 9 [C] =  > PhoneNo 9 [D] => FaxNo 9))
   
 
 

以下是我尝试过的事情

   function insertfiles($ arr_data)
 {
 n 到达($ arr_data为$ value){
 foreach($ value as $ key =>  $ a){
 $ data = array(
'名字'=> $ a,
'姓氏'=> $ a,
'电话'=> $ a,
'传真'=  > $ a 
); 
 
 $ this-> db-> insert('test',$ data);  
} 
} 
} 
   
 
 

我确定我搞砸了这个,它将数值插入到数据库中但是它按如下方式插入

因为它不会让我上传图片我提供了一个在线查看此图片的链接。 http://psadatadesign.com/img/test-bmp.jpg

任何帮助将不胜感激。 正如我试图弄清楚我做错了什么。

  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

2条回答 默认 最新

  • dsxcv5652 2015-03-22 16:00
    已采纳

    Use this rather your own function

    function insertfiles($arr_data)
    {
        foreach($array_data as $a){
            $data = array(
                   'Firstname' => $a['A'],
                   'Lastname' => $a['B'],
                   'Phone'=>$a['C'],
                   'Fax' =>$a['D']
                );
    
                $this->db->insert('test', $data); 
        }
    }
    
    已采纳该答案
    打赏 评论
  • dougu1952 2015-03-22 14:30

    There are two cases for this one for case 1

    If the array you pass does not contain a named key, check the function below

    $table_array_index_key = array( //if your array does not have a named key.
        0 => array( //first row
            0 => 'first_name 1',
            1 => 'last_name 1',
            2 => 'phone 1',
            3 => 'fax 1'
            ),
        1 => array( //second row
            0 => 'first_name 2',
            1 => 'last_name 2',
            2 => 'phone 2',
            3 => 'fax 2'
            ),
        );
    
    $row = array();
    $columns = array();
    for($x=0;$x<count($table_array_index_key);$x++){
            $row = array(
                'Firstname' => $table_array_index_key[$x][0], //$table_array[1][0] means table_array row 2 column 1  
                'Lastname' => $table_array_index_key[$x][1],
                'Phone' =>  $table_array_index_key[$x][2],
                'Fax' => $table_array_index_key[$x][3] 
            );
            array_push($columns,$row);
            $rows = array();
    }
    
    echo "<pre>";
    print_r($columns);
    

    else if your array contains named keys, check this out.

    $table_array_index_name = array( //if your array have a named key.
        0 => array( //first row
            'A' => 'first_name 1',
            'B' => 'last_name 1',
            'C' => 'phone 1',
            'D' => 'fax 1'
            ),
        1 => array( //second row
            'A' => 'first_name 2',
            'B' => 'last_name 2',
            'C' => 'phone 2',
            'D' => 'fax 2'
            ),
        );
    
    $rows = array();
    $columns = array();
    $arrayNames = array('A','B','C','D'); 
    for($x=0;$x<count($table_array_index_name);$x++){
            $row = array(
                'Firstname' => $table_array_index_name[$x][$arrayNames[0]], //note $arrayNames[0] = A
                'Lastname' => $table_array_index_name[$x][$arrayNames[1]],
                'Phone' =>  $table_array_index_name[$x][$arrayNames[2]],
                'Fax' => $table_array_index_name[$x][$arrayNames[3]] 
            );
            array_push($columns,$row);
            $rows = array();
    }
    
    echo "<pre>";
    print_r($columns);
    

    For which you can loop further like this one:

    $table_array_index_name = array( //if your array have a named key.
        0 => array( //first row
            'A' => 'first_name 1',
            'B' => 'last_name 1',
            'C' => 'phone 1',
            'D' => 'fax 1'
            ),
        1 => array( //second row
            'A' => 'first_name 2',
            'B' => 'last_name 2',
            'C' => 'phone 2',
            'D' => 'fax 2'
            ),
        );
    
    $rows = array();
    $columns = array();
    $arrayNames = array('A','B','C','D');
    $dbFieldName = array('Firstname','Lastname','Phone','Fax');
    for($x=0;$x<count($table_array_index_name);$x++){
        for($y=0;$y<count($arrayNames);$y++){
            $row[$dbFieldName[$y]] = $table_array_index_name[$x][$arrayNames[$y]];
        }
            array_push($columns,$row);
            $rows = array();
    }
    
    echo "<pre>";
    print_r($columns);
    

    which will return the following data:

    Array
    (
        [0] => Array
            (
                [Firstname] => first_name 1
                [Lastname] => last_name 1
                [Phone] => phone 1
                [Fax] => fax 1
            )
    
        [1] => Array
            (
                [Firstname] => first_name 2
                [Lastname] => last_name 2
                [Phone] => phone 2
                [Fax] => fax 2
            )
    
    )
    

    Personally I prefer the for loop because we can have more freedom and control when manipulating arrays.

    For the $this->db->insert_batch function, please check out the code igniter active record documentation: https://ellislab.com/codeigniter/user-guide/database/active_record.html

    打赏 评论

相关推荐 更多相似问题