2009-08-29 6 views
1

Я использую framework Codeigniter, и у меня есть форма с полями ввода. Когда я хочу, чтобы вставить значение входов полеев в базу данных я использую этот кодВставить данные из foreach в базу данных в PHP

function add($tableName) 
{ 
    $fieldsData = $this->db->field_data($tableName); // to get all fields name of the table like (id,title,post ..) 
    foreach ($fieldsData as $key => $field) 
    { 
     $datacc = array( $field->name => $this->input->post($field->name)); 
     echo $this->input->post($field->name) ; // when I submit the form I get all that data I need like (mySubjet, MyPost...) 
    } // but when I insert the data it insert just the last filed like (cat_id = 3) only !// and the other fields are empty .. 
    $this->db->insert($tableName, $datacc); 
} 

так что я получаю только последнее значение, вставленное в базе данных, но когда я ставлю строку запроса внутри foreach цикла как:

function add($tableName) 
{ 
    $fieldsData = $this->db->field_data($tableName); 
    $datacc = ""; 
    foreach ($fieldsData as $key => $field) 
    { 
     $datacc = array( $field->name => $this->input->post($field->name)); 
     $this->db->insert($tableName, $datacc); // inside the loop ! 
    } 
} 

вставить 15 записей/строк (количество полей в таблице) и вставить уникальное значение для каждой строки. Вставляет поле TITLE в первую строку, поле POST в следующей строке и поле dateOfpost в третьем и так далее.

ответ

2

У вас есть массив с именем $ datacc, но вы каждый раз его перезагружаете. Вам нужно добавить к нему.

function add($tableName) 
{ 
    $fieldsData = $this->db->field_data($tableName); 
    $datacc = array(); // you were setting this to a string to start with, which is bad 
    foreach ($fieldsData as $key => $field) 
    { 
     $datacc[ $field->name ] = $this->input->post($field->name); 
    } 
    $this->db->insert($tableName, $datacc); 

} 

Вставляет одну строку, но создает массив $ datacc по мере его поступления.

Вы должны взглянуть на http://php.net/array, чтобы узнать больше о том, как работают массивы.

+0

WaW! .. Я не могу поверить своим глазам. Наконец-то это работает! Gregmac Спасибо, ТАК ТАК ТАК. Я устал от этого кода, который я пробовал сотни раз в течение 3 дней 12 часов в день! Я очень ценю вашу помощь .. и я не забуду! :) – 2009-08-29 08:38:06

0
function insert_multiple($table,$data) 
{ 
    foreach($data as $values) 
    { 
     $this->db->insert($table, $values); 
    } 
} 
+0

Hi adatapost спасибо, что посмотрели .. Gregmac's решение работает .. спасибо .. – 2009-08-29 08:39:31

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