Я внедрил этот код для вставки и обновления данных в моей базе данных, но когда я пытаюсь, данные новой строки всегда вставляются в таблицу, и она не обновляется. Как я могу определить уникальный ключ в моем случае, чтобы заставить его работать? У меня есть первичный ключ.Определить ограничение UNIQUE для таблицы
<?php
$json = '{"latitude":53.86898451,"longitude":10.66561387,"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."(latitude, longitude, created_at)
VALUES(? , ? , 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 craeted";
}
UPDATE
Это то, что я пытаюсь в настоящее время
$sql = "INSERT INTO ".$route."(id, latitude, longitude, created_at)
VALUES(id, ? , ? , NOW())
ON DUPLICATE KEY
UPDATE latitude = VALUES(latitude)
, longitude = VALUES(longitude)";
Какая переменная Я должен добавить в ЦЕННОСТЕЙ фигурные скобки для ид?
Как предполагается узнать, какую строку обновить? Должна ли ваша таблица иметь столбец «route»? – Barmar
BTW: Вам не нужно указывать 'UNIQUE' для первичного ключа, он всегда уникален. И вам не нужно вставлять столбец 'created_at', поскольку он по умолчанию относится к текущему времени. – Barmar
@ Бармар: Я не понимаю, что вы хотите? Мне нужно добавить столбец маршрута в мой стол, чтобы заставить его работать? – tree