2015-07-11 80 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

不清楚請多說明。謝謝 –