Как мне отформатировать данные для insert_batch в Codeigniter? - PullRequest
0 голосов
/ 29 февраля 2012

У меня проблемы с insert_batch. У меня есть входные данные, такие как:

<input type="text" name="title[]" />

В моем контроллере у меня есть:

for($i=0; $i<=3; $i++)
{
    $data[] = array(
        'field' => $this->input->post('text'),
        'filed2' => $this->input->post('user')
    );
}
$this->db->insert_batch('table', $data)

Что я делаю не так, и как лучше это сделать?

Ответы [ 2 ]

2 голосов
/ 29 февраля 2012

Если имя вашего поля имеет квадратные скобки, такие как name="text[]", оно отправит массив (как вы, вероятно, знаете). Учитывая это, $this->input->post('text') всегда будет возвращать сам массив. В настоящее время вы назначаете один и тот же массив каждый раз. Попробуйте получить доступ к значениям по ключу с помощью переменной $i:

$text = $this->input->post('text');
$user = $this->input->post('user');

for($i=0; $i<=3; $i++)
{
    $data[] = array(
        'field' => $text[$i],
        'filed2' => $user[$i]
    );
}
$this->db->insert_batch('table', $data)

В качестве альтернативы, которая может быть более разумной, вместо этого переберите данные $_POST, выбрав одно имя поля:

$text = $this->input->post('text');
$user = $this->input->post('user');
foreach ($text as $key => $value)
{
    $data[] = array(
        'field' => $text[$key],
        'filed2' => $user[$key]
    );
}

Таким образом, у вас не будет знать, сколько значений ожидать, но это действительно ваше дело.

0 голосов
/ 19 марта 2013

Для пользователей, которые ищут «$ this-> db-> insert_batch formatting», может представлять интерес следующее:
Я искал способ упаковать много информации в массив и вставить ее в таблицу базы данных как одну операцию. Я думал, что insert_batch может подойти, но у него есть предупреждение, которого я не ожидал: При форматировании массива имена полей должны быть идентичны в каждом подмассиве I.E НЕ будет работать следующее:

 $data = array(
   array(
      'title' => 'My title' ,
      'first-name' => 'My Name' ,
      'date' => 'My date'
   ),
   array(
      'title' => 'Another title' ,
      'last-name' => 'Another Name' ,
      'date' => 'Another date'
   )
);

$this->db->insert_batch('mytable', $data);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...