如何使用查找表在带有PHP的MSSQL中插入一行


How can I insert a row into MSSQL with PHP using a lookup table?

我正在创建一个web应用程序,其中一个数据库接口需要一个查找表。这是执行SQL:的部分

$A = $_POST['A'];
$B = $_POST['B'];
$tsql= "INSERT INTO INSERT_TABLE (
            A,
            B_Index)
            VALUES
            (?, ?)";
$var = array($A, $B);

我的问题是,我不想插入B本身的值,而是在查找表中插入该值的索引。我试图将VALUES行与表连接起来,但MSSQL似乎不喜欢这样。有什么想法吗?

编辑:查找表的格式为:

index | value
-------------
   1  |  horse
   2  |   cow
  ... |  ...

如果$B=='horse',我想插入2而不是'horse'。

编辑2:我尝试了这个查询,但不幸的是它不起作用,但它显示了我想做的事情:

INSERT INTO INSERT_TABLE (A, B_Index)
VALUES 
SELECT temp.A, LT.index
FROM (A,B) temp
INNER JOIN LOOKUP_TABLE LT
ON LT.value = temp.B

您可以在INSERT语句中包含SELECT和FROM子句。这允许您将LOOKUP_TABLE中的记录拉入INSERT_TABLE。

示例

INSERT INTO INSERT_TABLE
    (
        A,
        B
    )
SELECT
    ?,
    lt.Value
FROM
    LOOKUP_TABLE AS lt
WHERE
    lt.Index = ?
;    

编辑:我真的应该强调一下,上面是伪代码。在实践中,问号应该替换为值。请参阅下面@Terminus的评论,了解更多信息。