键2的重复输入''

时间:2013-05-14 03:52:42

标签: php mysql duplicates

这是php代码,它为我提供了“密钥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 个答案:

答案 0 :(得分:0)

正如我想你想要更新(如果已经存在),请将此语法用于MySQL请求:

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

因此,当您的用户已存在时,将使用新坐标

进行更新

答案 1 :(得分:0)

如果user_id是主键,则使其自动递增,并且不要从前端发布此值。

如果它不是主键,那么肯定是一个唯一的键。所以在插入之前首先检查记录是否已经存在。

答案 2 :(得分:-1)

如果你想要每个用户的唯一记录,你必须检查用户记录是否已经存在,然后使用UPDATE而不是INSERT。

如果每个用户有很多记录,只需从“Userid”列中删除PRIMARY KEY或UNIQUE KEY。