вставить данные из foreach в базу данных в PHP - PullRequest
1 голос
/ 29 августа 2009

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

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 ]

2 голосов
/ 29 августа 2009

У вас есть массив с именем $ 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 голосов
/ 29 августа 2009
function insert_multiple($table,$data)
{
   foreach($data as $values)
   {
      $this->db->insert($table, $values);
   }
} 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...