Я пытаюсь использовать оператор MERGE INTO в своем php-файле для обновления или вставки в базу данных MySQL для многопользовательской игры.
Вот полное описание того, что я пытаюсь сделать:
Файл php вызывается со следующей строкой из файла javascript:
xmlhttp.open('GET', "phpsqlajax_genxml.php?" + "lat=" + lla[0] + "&heading=" + truckHeading + "&lng=" + lla[1] + "&velocity0=" + vel0 + "&velocity1=" + vel1 + "&velocity2=" + vel2 + "&id=" + playerNumber, true);
Это будет отправка информации о php-файле для обновления базы данных. Либо это будет новый игрок, и в первый раз эта информация будет отправлена, что означает, что будет создана новая строка в базе данных, либо это будет текущий игрок, которому просто нужно обновить свою информацию.
Если это новый игрок, то отправляемым идентификатором будет тот, которого еще нет в базе данных.
По какой-то причине база данных не обновляется и новые строки не добавляются. Я думаю, что это синтаксическая ошибка, потому что у меня нет большого опыта использования операторов MERGE. Может кто-то с этим опытом, пожалуйста, дайте мне знать, что я могу делать не так?
Вот код перед оператором MERGE INTO, чтобы вы могли понять, какие переменные какие:
$id = $_GET['id'];
$lat = $_GET['lat'];
$lng = $_GET['lng'];
$heading = $_GET['heading'];
$velocity0 = $_GET['velocity0'];
$velocity1 = $_GET['velocity1'];
$velocity2 = $_GET['velocity2'];
id - это заголовок столбца, $ id - это идентификатор, передаваемый в
Вот мой текущий оператор MERGE INTO в моем php-файле:
MERGE INTO markers USING id ON (id = $id)
WHEN MATCHED THEN
UPDATE SET lat = $lat, lng = $lng, heading = $heading, velocityX = $velocity0, velocityY = $velocity1, velocityZ = $velocity2
WHEN NOT MATCHED THEN
INSERT (id, name, address, lat, lng, type, heading, velocityX, velocityY, velocityZ) VALUES ($id, 'bob', 'Poop Lane', $lat, $lng, 'Poop', $heading, $velocity0, $velocity1, $velocity2)