我正在尝试使用下面的代码更新我的记录,但每次都会在我的表格中插入新记录。如何指定UNIQUE键以达到我的目标?
这是我在php脚本中添加的整个代码加上connection.php文件,它只包含连接语句。在我的mysql中,我只有一个数据库,其中正在创建route_4表。我的数据库只包含route_4表。
PHP脚本:
<?php
$json = '{"latitude":83.16898451,"longitude":31.16561387,"route":4}';
$data = json_decode ( $json );
$route = "route_" . $data->{'route'};
$latitude = $data->{'latitude'};
$longitude = $data->{'longitude'};
require 'connection.php';
// check whether route's table exist.
$results = $con->query ( "SHOW TABLES LIKE'" . $route . "'" ) or die ( mysqli_error () );
if (($results->num_rows) == 1) {
//"UPDATE MyGuests SET lastname='Doe' WHERE id=2"
$sql = "INSERT INTO ".$route."(id, latitude, longitude, created_at)
VALUES( id, ? , ? , NOW() )
ON DUPLICATE KEY
UPDATE latitude = VALUES(latitude)
, longitude = VALUES(longitude)";
$stmt = $con->prepare($sql) or die ( $con->error );
$stmt->bind_param("ss",$latitude,$longitude);
$stmt->execute();
$stmt->close();
echo "Table exist";
} else {
$create = "CREATE TABLE " . $route . "
(id INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY UNIQUE,
latitude FLOAT(10,6) NOT NULL,
longitude FLOAT(10,6) NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP)" ;
$stmt = $con->prepare($create) or die ( $con->error );
$stmt->execute();
$stmt->close();
echo "table was created";
}
答案 0 :(得分:0)
在表格结构中进行以下更改
1)删除列Unique
id
键
2)为unique
和&#39;经度``添加latitude
ALTER TABLE `db_name`.`route_4` ADD UNIQUE (
`latitude` ,
`longitude`
)
一旦你将纬度和经度都作为一组唯一键,那么你的sql查询将更新重复条目的记录,否则将插入。
希望这有帮助