这是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());
}
我认为我的代码没有问题。请帮忙。
答案 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。