如何使用查找表在PHP中向MSSQL中插入一行?

时间:2016-01-11 12:05:19

标签: php sql sql-server

我正在创建一个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 =='马',我想插入2而不是'马'。

EDIT2:我尝试了这个查询,但遗憾的是它不起作用,但它显示了我想要做的事情:

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

1 个答案:

答案 0 :(得分:2)

您可以在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的评论。