Mysql insert语句,其中给出一个值并从子查询获取

时间:2013-07-30 07:14:32

标签: mysql

我有以下查询:

INSERT INTO `area`(name, fk_hub_id) VALUES ('$name',SELECT 'id' from hub WHERE name = '$hub_name')  

我要做的是插入一个值(name = $ name),该值是从一个子查询获得的某个集线器的from,然后是外键ID获得的。

当我运行此查询时,我收到以下错误:

  

1064 - 您的SQL语法出错;检查与您的MySQL服务器版本相对应的手册,以便在第1行的“WHERE name ='EASTERN_CAPE')'中使用'SELECT'id'附近的正确语法。

我的查询不正确吗?有什么建议吗?

3 个答案:

答案 0 :(得分:4)

在column_name周围使用`,您在' column_name附近使用id。也可以使用()进行内部查询。

INSERT INTO `area`(name, fk_hub_id) VALUES ('$name',SELECT 'id' from hub WHERE name = '$hub_name')

应该是

INSERT INTO `area`(name, fk_hub_id) VALUES ('$name',(SELECT `id` from hub WHERE name = '$hub_name'))

注意:您的代码对SQL注入是开放的,使用预处理语句或转义它们。

答案 1 :(得分:2)

将给定值放入SELECT

INSERT INTO area (name, fk_hub_id)
SELECT '$name', id
FROM hub
WHERE name = '$hub_name'

答案 2 :(得分:0)

尝试:

INSERT INTO `area` (name, fk_hub_id)
SELECT '$name',
       id
FROM   hub
WHERE  name = '$hub_name'