0

我有以下查询:

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 行的 'SELECT 'id' from hub WHERE name = 'EASTERN_CAPE')' 附近使用正确的语法。

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

4

3 回答 3

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 注入是开放的,使用准备好的语句或转义它们。

于 2013-07-30T07:17:54.910 回答
2

将给定值放入SELECT

INSERT INTO area (name, fk_hub_id)
SELECT '$name', id
FROM hub
WHERE name = '$hub_name'
于 2013-07-30T07:18:19.960 回答
0

尝试:

INSERT INTO `area` (name, fk_hub_id)
SELECT '$name',
       id
FROM   hub
WHERE  name = '$hub_name'  
于 2013-07-30T07:18:05.193 回答