以下是我的视图文件中的部分。
<div class="table-responsive">
<table class="table table-bordered" id="dynamic_field">
<tr>
<td><input type="text" name="description[]" placeholder="Enter your Description" class="form-control name_list" required="" /></td>
<td><input type="text" name="price[]" placeholder="Enter your Price" class="form-control name_list" required="" /></td>
<td><button type="button" name="add" id="add" class="btn btn-success">Add More</button></td>
</tr>
</table>
</div>
这是我的模型
$query_status = $this->db->insert('events', $register_data_array);
$event_insert_id=$this->db->insert_id();
//insert the event ticket prices
$price_description = $_POST['description'];
$price = $_POST['price'];
if ( ! empty($price_description) && ! empty($price) )
{
foreach ($price_description as $key => $value) {
$data['event_id'] = $event_insert_id;
$data['price_description'] = $value;
$data['price'] = $price[$key];
$this->db->insert('event_ticket_prices',$data[]);
}
$this->db->trans_complete();
return true;
}
insert_id是表单上静态信息的最后一个插入ID。这些可以毫无问题地保存,但对于动态故事我收到错误。
回答 您的插入位置错误。 移动
$query_status = $this->db->insert('events', $register_data_array);
$event_insert_id=$this->db->insert_id();
在foreach之后像这样
foreach ($price_description as $key => $value) {
$query_status = $this->db->insert('events', $register_data_array);
$event_insert_id=$this->db->insert_id();
$data['event_id'] = $event_insert_id;
...
这将解决您的问题。
注意:老实说,您的代码似乎编写效率低下,因为执行插入然后更新并不是最好的方法(您应该一次性插入所有数据),但我没有纠正它。此外,您应该始终在每次循环时清空
$data
数组。