2014-05-24 6 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

Вы ищете это?

ВСТАВИТЬ ИГНОРИРУЙТЕ INTO щелчки (идентификатор, file_id, страна, дата, TimeClick, user_subid) VALUES (NULL, '1500', 'Canada', '2014-05-24', «1400934475 », '7c282b9227328778680d5826e01f6d')

EDIT:

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; 

или НЕ СУЩЕСТВУЕТ

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?

Если вы хотите обновить код, если существует перекодировка. В противном случае вставьте новый код. Просто попробуйте UPSERT CODE. 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

Смежные вопросы