CodeIniter中键'PRIMARY'的重复条目'0'

时间:2015-11-14 20:14:02

标签: php sql codeigniter

CodeIgniter我需要插入约会信息。现在的问题是每个约会可以有更多的服务相关联。因此,为了解决此问题,我认为创建一个预约多行,例如:

约会详情

服务:剪裁,颜色

如何看到有两个服务关联,所以在我的数据库中我会有两行这样的:

id|    name     | service
10  appointment    cut
10  appointment |  color

现在我的实现中没有剪切和颜色,而是有一个数字,因为我有另一个包含所有服务细节的表。这是我的代码,允许我在我的表中插入约会:

$appuntamento = $appointment; 
unset($appuntamento['id_services']);

foreach($appointment['id_services'] as $id)
{
    $appuntamento['id_services'] = $id; 

      if(!$this->db->insert('ea_appointments', $appuntamento))
      {
          throw new Exception('Error.');
      }
      $insert_id = intval($this->db->insert_id());
}
return $insert_id;

在这个函数中,我传递了参数appointment,我克隆了appuntamento对象中的appointment对象,因为我需要遍历appointment中可用的每个服务。

事实上,表中的同一日期应该有多少行,因为相关的服务数量是多少?我正在执行id_services'的未设置,因为它是一个数组,正如我所说,我需要为每个相关服务插入相同的约会。

所以在foreach中我设置了我的appuntamento变量的索引id_services。所以我插入了对象,结构是这样的:

INSERT INTO `ea_appointments` (`id_users_provider`, `start_datetime`, `end_datetime`, 
    `notes`, `is_unavailable`, `id_users_customer`, `book_datetime`, `hash`, `id_services`) 
VALUES ('85', '2015-11-14 22:00:00', '2015-11-14 22:00:00', '', 0, '87', 
    '2015-11-14 12:00:33', '7a7e195d47b22cfd795f1876b3d2711b', '15')

但是我收到了这个错误:

  

键'PRIMARY'重复输入'0'

在我的数据库表中,我取消设置auto_increment'原因如果我设置了auto_increment,我将在具有不同id的多行中获得相同的约会信息,这是错误的。

在最后一个代码行中,无论如何,我正在尝试返回插入约会的id。

那么,我做错了什么?

3 个答案:

答案 0 :(得分:2)

  

在我的数据库表格中,我设置了auto_increment'如果我设置了   auto_increment我将获得相同的约会信息   多行具有不同的id,这是错误的。

试试这个:让你的id自动增加。然后添加一个单独的字段来保存约会ID。

答案 1 :(得分:0)

你有"重复录入' 0'"因为你没有为ea_appointments.id自动增量。

您可以为ea_appointments.id添加自动增量。

插入后,您可以使用带有$this->db->insert_id()的插入记录的ID(例如,使用PDO::lastInsertId)插入关联的表格。

答案 2 :(得分:0)

制作两个主表 1 GT; mstr_appointment:此表包含约会详细信息。 2 - ; mstr_services:这包含有关不同服务的详细信息。

然后创建1个参考表 appointment_service:这包含有关哪个约会包含哪些服务的详细信息。

前:

1> mstr_appointment

  • id_users_provider(主键,自动增量)
  • start_datetime
  • end_datetime
  • 注释
  • is_unavailable
  • id_users_customer
  • book_datetime
  • 散列 2 - ; mstr_services
  • service_id(主键,自动增量)
  • 服务名

3> appointment_service(参考表)   - id(主键,自动增量)   - id_users_provider(foreign key => mstr_appointment)   - service_id(外键=> mstr_services)

ex of 3 tables with dataentry 根据表设计写入插入查询。只需要插入约会和服务的ID。 虽然获取记录需要编写简单的连接。 简单...!