首页 > 解决方案 > 如何手动插入值以及同时从一个表中选择到另一个表中?

问题描述

在这里,我正在这样做,而不是获取 CustomerID 的 MAX 值,而是得到 0。

我的客户数据表:

     Columns

    1   CustomerID      
    2   Name         
    3   PhoneNumber 
    4   Address      

我的 OrderTable1 表

 Columns

1   OrderID    
2   TableID 
3   OrderDate   
4   OrderStatus
5   OrderDesc   
6   CustomerID

INSERT INTO OrderTable1 (OrderDate,OrderStatus,OrderDesc,CustomerID)
VALUES ('$LenthOfService','$Quantity','$ItemName','(SELECT MAX(CustomerID) FROM CustomerData)');

标签: phpmysql

解决方案


您可以使用该INSERT INTO .. SELECT语句。对于输入变量值,我们可以SELECT将它们与表中的最大值一起CustomerID使用CustomerData

INSERT INTO OrderTable1 (OrderDate,OrderStatus,OrderDesc,CustomerID)
SELECT MAX('$LenthOfService') AS OrderDate,
       MAX('$Quantity') AS OrderStatus,
       MAX('$ItemName') AS OrderDesc,
        MAX(CustomerID) AS CustomerID
FROM CustomerData

为了符合 ANSI SQL,我们需要Max()在变量值周围使用函数。更多详细信息:SELECT 列表不在 GROUP BY 子句中,并且包含非聚合列 .... 与 sql_mode=only_full_group_by 不兼容

此外,您似乎没有使用参数化查询。在这种情况下,您的代码将容易受到与SQL 注入相关的攻击。请学习使用Prepared Statements


推荐阅读