我有以下查询:
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'附近的正确语法。
我的查询不正确吗?有什么建议吗?
答案 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'