2015-07-11 47 views
0

如果整个行在表中不存在,我想插入表中。我的代码如下:INSERT IGNORE不能正常工作

$insert_sql="insert ignore into indexes(id,user_id,course_id,index) values 
      ('','".$row2['user_id']."','".$course_id."','".$index."')"; 
mysqli_query($db,$insert_sql); 

,但它插入重复的行

+0

您需要'不存在' – Tushar

+0

您应该对您想要唯一的列有唯一的键约束。 –

+0

@ Code-Monk第一列(id)是唯一的,但是我只想忽略整行与将要插入的行相同。 –

回答

0

insert ignore忽略所有的错误。如果您尝试避免重复,那么我建议您使用on duplicate key update。这只会忽略重复的一个错误。

,首先是定义的重复键:

create unique index idx_indexes_col1_col2 on indexes(col1, col2) 

(无论你想成为唯一的)。

然后一个insert像:

insert into indexes(col1, col2, . . .) 
    values (. . .) 
    on duplicate key update col1 = values(col1); 

col = values(col1)并没有真正做任何事情 - 价值不会改变。但它确实防止了一个错误。

+0

不清楚请多说明。谢谢 –