在php中使用带有2个选择的插入
Posted
技术标签:
【中文标题】在php中使用带有2个选择的插入【英文标题】:Using Insert with 2 selects inside in php 【发布时间】:2018-02-08 12:01:43 【问题描述】:这就是我想要做的事情
$sql = "INSERT INTO LocationGeofencePoint( PointNo, Latitude, Longitude)
VALUES ( (SELECT LocationGeofenceID FROM LocationGeofence WHERE GeofenceName='".$name."'),
(SELECT MAX(PointNo)+1 FROM LocationGeofencePoint),
'".$lat."',
'".$long."')";
但是会发生这种情况。
每次我添加“”时,第二个选择都会停止工作。
这些是 2 个单独的表 LocationGeofencePoint 和 LocationGeofence,我正在尝试从 LocationGeofence 获取值到 LocationGeofencePoint。
结果应该类似于 LocationGeofencePoint(2 , 14, 54.333, 55.435) (这些是值)
LocationGeofence(2, Test , group1)(试图将这个“2”放入位置地理围栏点)
我也尝试过,以防万一我的编辑器出错了,但事实并非如此,而且我已经没有想法了,知道我能做什么吗?我尝试分离查询,但我还需要 2 次选择来运行第 2 次,但这不起作用。
【问题讨论】:
样本数据和期望的结果将真正帮助其他人了解您想要做什么。同样,您使用的是 mysql 还是 Azure?请正确标记。 您可以尝试的一件事是将您的列和表名写入backticks(``)
,以便我们更容易理解
@GordonLinoff 现在更清楚了吗?
【参考方案1】:
$sql = "INSERT INTO LocationGeofencePoint( PointNo, Latitude, Longitude)
VALUES ( (SELECT LocationGeofenceID FROM LocationGeofence WHERE GeofenceName='".$name."'),
(SELECT MAX(PointNo)+1 FROM LocationGeofencePoint),
'".$lat."',
'".$long."')";
在插入字段中放入相同数量的列及其列值。
【讨论】:
【参考方案2】:首先,GeoReferencePoint
应声明为 identity
列。您不应该在插入时增加值。数据库会为您执行此操作。
那么,你应该使用insert . . . select
:
$sql = "INSERT INTO LocationGeofencePoint (PointNo, Latitude, Longitude)
SELECT LocationGeofenceID, $lat, $long
FROM LocationGeofence
WHERE GeofenceName = '".$name."';
第三,这也不对。传入的三个值应该是带参数的。
【讨论】:
【参考方案3】:您的意思是“停止工作”,因为颜色与第一个 SELECT 的颜色不同吗?
如果是这样,请不要担心它只是编辑器的问题。运行代码后,您将获得所需的结果。我以前也经历过。
【讨论】:
以上是关于在php中使用带有2个选择的插入的主要内容,如果未能解决你的问题,请参考以下文章
如何在javascript中插入带有innerHTML的php数组