2013-05-14 4 views
1

Вот код PHP, который дает мне «Дублировать запись„“для ключа 2» ошибки ...Дублировать запись «» для ключа 2

<?php 

$host = "localhost"; 
$user = "admin"; 
$pass = "123"; 
$connection = mysql_connect($host,$user,$pass) or die (mysql_errno().": ".mysql_error()."<BR>"); 

    $userid= mysql_real_escape_string($_POST['userid']); 
$latitude= mysql_real_escape_string($_POST['latitude']); 
$longitude= mysql_real_escape_string($_POST['longitude']); 
//$time= mysql_real_escape_string($_POST['time']); 


$db_select=mysql_select_db("new"); 
if(!$db_select){ 
    die(mysql_error()); 
    echo "error"; 
} 

$query= "INSERT INTO location(Userid, Latitude, Longitude) 
VALUES ('{$userid}', '{$latitude}', '{$longitude}'); " ; 

if($medo=mysql_query($query)){ 
    header("localhost/filename"); 
    exit; 
}else{ 
    echo"<p> Error</p>"; 
    die(mysql_error()); 
} 

Я не думаю, что есть проблема с моим кодом , пожалуйста помоги.

+3

[** Пожалуйста, не используйте 'mysql_ *' функции в новом коде **] (http://bit.ly/phpmsql). Они больше не поддерживаются [и официально устарели] (https://wiki.php.net/rfc/mysql_deprecation). См. [** красное поле **] (http://j.mp/Te9zIL)? Узнайте о [* подготовленных операторах *] (http://j.mp/T9hLWi) и используйте [PDO] (http://php.net/pdo) или [MySQLi] (http://php.net/ mysqli) - [эта статья] (http://j.mp/QEx8IB) поможет вам решить, какой из них. Если вы выберете PDO, [здесь хороший учебник] (http://www.brightmeup.info/article.php?a_id=2). –

+0

Проблема в том, что у меня недостаточно времени, чтобы узнать или даже изменить свой код. Есть ли решение этой проблемы? Может быть, ярлык? –

+0

Эта ошибка означает, что у вас есть дубликаты PRIMARY KEY для столбца Идентификатор, или дубликат для столбцов, который является частью ['UNIQUE'] (http://dev.mysql.com/doc/refman/5.0/en/ create-index.html). Проверить таблицу для дубликатов. Подумайте об использовании ['INSERT INGNORE'] (https://dev.mysql.com/doc/refman/5.5/en/insert.html) или [' REPLACE'] (http://dev.mysql.com/doc /refman/5.0/en///replace.html). – BlitZ

ответ

-1

Если вам нужна уникальная запись для каждого пользователя, вы должны проверить, существует ли запись пользователя, а затем использовать UPDATE вместо INSERT.

Если для каждого пользователя имеется много записей, просто удалите PRIMARY KEY или UNIQUE KEY из столбца «Userid».

+0

Как «разрушить базу данных», если вы не знаете «как это работает» или «почему это работает». Downvoted. – BlitZ

+0

Я думаю, вы просто неправильно поняли, что я имею в виду. Если необходимо сохранить несколько координат для каждого пользователя, необходимо удалить «первичный ключ». Например: [user1: 23,83], [user1: 83,28] – Heavy

0

Как я полагаю, вы хотите обновить, если уже имеется, используйте следующий синтаксис для запроса MySQL:

$query= "INSERT INTO location (Userid, Latitude, Longitude) 
VALUES ('{$userid}', '{$latitude}', '{$longitude}') 
ON DUPLICATE KEY UPDATE Latitude='{$latitude}', Longitude='{$longitude}';"; 

Так что если у пользователя уже существует, то он будет обновляться с новыми координатами

0

, если user_id является первичным ключом, сделать его автоматическим приращением и дон, t разместить это значение с переднего конца.

Если это не первичный ключ, он будет определенно уникальным ключом. поэтому перед вставкой сначала проверьте, что запись уже существует или нет.

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