在php

时间:2018-02-08 12:01:43

标签: php sql sql-server azure-sql-database

这是我想要做的事情

$sql = "INSERT INTO LocationGeofencePoint( PointNo, Latitude, Longitude)
        VALUES ( (SELECT LocationGeofenceID FROM LocationGeofence WHERE GeofenceName='".$name."'), 
                (SELECT MAX(PointNo)+1 FROM LocationGeofencePoint),
                 '".$lat."',
                 '".$long."')";

但这种情况发生了。

enter image description here 我每次添加""第二个选择停止工作。

这是2个单独的表LocationGeofencePoint和LocationGeofence,我试图从LocationGeofence获取值到LocationGeofencePoint。

结果应该是这样的 LocationGeofencePoint(2,14,54.333,55.435)(这些是值)

LocationGeofence(2,Test,group1)(尝试将此' 2'放入位置geofencepoint)

我也尝试过,以防万一我的编辑出了问题,但它不是,我已经没有想法了,对我能做什么有任何想法?我尝试分离查询,但我还需要2个选择来运行第二个查询,但它不起作用。

3 个答案:

答案 0 :(得分:1)

首先,GeoReferencePoint应声明为identity列。你不应该在insert上增加值。数据库为您做到了。

然后,您应该使用insert . . . select

$sql = "INSERT INTO LocationGeofencePoint (PointNo, Latitude, Longitude)
            SELECT LocationGeofenceID, $lat, $long
            FROM LocationGeofence
            WHERE GeofenceName = '".$name."';

第三,这也不对。传入的三个值应该使用参数。

答案 1 :(得分:0)

你的意思是'停止工作',因为颜色与第一个SELECT的颜色不一样吗?

如果是这样,请不要担心编辑的问题。运行代码后,您将获得所需的结果。我以前经历过同样的经历。

答案 2 :(得分:0)

$sql = "INSERT INTO LocationGeofencePoint( PointNo, Latitude, Longitude)
        VALUES ( (SELECT LocationGeofenceID FROM LocationGeofence WHERE GeofenceName='".$name."'), 
                (SELECT MAX(PointNo)+1 FROM LocationGeofencePoint),
                 '".$lat."',
                 '".$long."')";

在插入字段中添加相同数量的列及其列值。