2014-05-24 65 views
0

我有這個代碼,但有時它插入我雙記錄。我無法爲字段user_subid設置唯一的密鑰。插入記錄如果不存在沒有唯一鍵

$sql="SELECT `user_subid` FROM `clicks` WHERE `user_subid`='".$user_subid."'"; 
$query=mysql_query($sql); 
if(mysql_num_rows($query)==0){ 
    $sqlIns="INSERT INTO `clicks` (`file_id`, `country`, `date`, `timeClick`, `user_subid`) VALUES ('".$fileid."', '".$country."', '".$date."', '".$timeClick."', '".$user_subid."')"; 
    if(mysql_query($sqlIns)==true){ 
     echo 1; 
    } 
    else { echo 0;} 
} 

我試着用:

INSERT INTO `clicks` (
`id` , 
`file_id` , 
`country` , 
`date` , 
`timeClick` , 
`user_subid` 
) 
VALUES (
NULL , '1500', 'Canada', '2014-05-24', '1400934475', '7c282b9227328778680d5826e01f6d' 
) WHERE NOT EXISTS (SELECT * FROM `clicks` WHERE `user_subid`='7c282b9227328778680d5826e01f6d'); 

但它不工作。

回答

1

你在找嗎?

INSERT 忽略 INTO點擊(ID,file_id的,國家,日期,timeClick,user_subid) VALUES(NULL, '1500', '加拿大', '2014年5月24日',「1400934475 」, '7c282b9227328778680d5826e01f6d')

編輯:

INSERT INTO `clicks` (
    `id` , 
    `file_id` , 
    `country` , 
    `date` , 
    `timeClick` , 
    `user_subid` 
) 
SELECT `id` , 
`file_id` , 
`country` , 
`date` , 
`timeClick` , 
`user_subid` 
FROM 
(SELECT NULL id , '1500' `file_id` , 'Canada' `country` , '2014-05-24' `date` , '1400934475' `timeClick` , '7c282b9227328778680d5826e01f6d' `user_subid`) a 
LEFT JOIN `clicks` b ON 
    a.id = b.id AND a.`file_id` = b.`file_id` AND a.`user_subid` = b.`user_subid` 
WHERE b.`user_subid` IS NULL; 

或NOT EXIST

INSERT INTO `clicks` (
    `id` , 
    `file_id` , 
    `country` , 
    `date` , 
    `timeClick` , 
    `user_subid` 
) 
SELECT `id` , 
`file_id` , 
`country` , 
`date` , 
`timeClick` , 
`user_subid` 
FROM 
(SELECT NULL id , '1500' `file_id` , 'Canada' `country` , '2014-05-24' `date` , '1400934475' `timeClick` , '7c282b9227328778680d5826e01f6d' `user_subid`) a 
WHERE NOT EXISTS (
    SELECT 1 
    FROM `clicks` 
    WHERE `user_subid` = '7c282b9227328778680d5826e01f6d') 
+0

不,我想與您的代碼,但它仍然插入了我。 –

+0

嘗試編輯答案 –

1

你的SQL工作正常嗎?

如果你想更新重新編碼,如果recode存在。否則插入新的重新編碼。只需嘗試UPSERT代碼。 INSERT ... ON DUPLICATE KEY UPDATE

INSERT INTO table (a,b,c) VALUES (1,2,3) 
    ON DUPLICATE KEY UPDATE c=c+1; 
+0

我無法爲表格設置唯一的密鑰。 –

+0

使用您的主鍵。表應該有主鍵。 –

0

有你試圖改變

$sql="SELECT `user_subid` FROM `clicks` WHERE `user_subid`='".$user_subid."'"; 
$query=mysql_query($sql); 
if(mysql_num_rows($query) < 1){ // change == 0 to < 1 
$sqlIns="INSERT INTO `clicks` (`file_id`, `country`, `date`, `timeClick`, `user_subid`) VALUES ('".$fileid."', '".$country."', '".$date."', '".$timeClick."', '".$user_subid."')"; 
if(mysql_query($sqlIns)==true){ 
    echo 1; 
} 
    else { echo 0;} 
} 
+0

我只需要插入,如果不存在。爲了獨特的點擊。但我無法設置唯一的密鑰。 –

+0

我只是編輯是相反的 – manout

相關問題