在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个选择的插入的主要内容,如果未能解决你的问题,请参考以下文章

MSSQL php 从一种编码中选择并插入到另一种

如何在javascript中插入带有innerHTML的php数组

ajax 和 php:如何从数据库中选择变量并使用 ajax 插入数据库

简单的 php - mysql 选择和插入

SQL 迁移脚本 - 插入到带有输出 ID 的选择中

在 PHP 中选择并插入 BLOB 数据