2015-03-22 3 views
3

Привет, я пытаюсь вставить многомерный массив в mysql с помощью codeigniter. У меня есть некоторые проблемы с правильной установкой значений. Вот как многомерный массив выглядитВставка многомерного массива Codeigniter в базу данных

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)) 

Вот что я попытался сделать

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 Мессинг это вверх ужасно, он вставляет значения в базу данных, но это их вставки следующим образом

поскольку он не позволяет загружать изображение im, предоставляя ссылку для просмотра этого изображения в Интернете. http://psadatadesign.com/img/test-bmp.jpg

любая помощь будет оценена. Как я пытаюсь выяснить, что я сделал неправильно.

ответ

1

Используйте это скорее ваша собственная функция

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); 
    } 
} 
+0

Позвольте мне знать, если есть какие-либо проблемы. –

0

Есть два случая для этого один для случая 1

Если массив вы передаете не содержит именованный ключ, проверьте функцию ниже

$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, если ваш массив содержит именованные ключи, проверьте это.

$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); 

Для которой вы можете цикл дальше, как это одна:

$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); 

который будет возвращать следующие данные:

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 
     ) 

) 

Лично я предпочитаю для цикла, потому что мы можем иметь больше свободы и управление при манипулировании массивами.

Для $ this-> db-> insert_batch функция, пожалуйста, проверьте код воспламенитель активной записи документации: https://ellislab.com/codeigniter/user-guide/database/active_record.html

Смежные вопросы