【发布时间】:2011-09-12 13:41:27
【问题描述】:
我正在尝试在我的 php 文件中使用 MERGE INTO 语句来更新或插入多人游戏的 MySQL 数据库。
以下是我想要完成的任务的完整描述:
在 javascript 文件中使用以下行调用 php 文件:
xmlhttp.open('GET', "phpsqlajax_genxml.php?" + "lat=" + lla[0] + "&heading=" + truckHeading + "&lng=" + lla[1] + "&velocity0=" + vel0 + "&velocity1=" + vel1 + "&velocity2=" + vel2 + "&id=" + playerNumber, true);
这将发送 php 文件信息以更新数据库。要么这是一个新玩家并且第一次发送此信息,这意味着将在数据库中创建一个新行,要么它将是一个只需要更新其信息的当前玩家。
如果是新玩家,发送的“id”将是数据库中尚不存在的“id”。
由于某种原因,数据库没有更新,也没有添加新行。我认为这是一个语法错误,因为我没有太多使用 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是传入的id
这是我的 php 文件中当前的 MERGE INTO 语句:
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)
【问题讨论】: