以下是我目前正在尝试的内容,但我收到了一个mySQL错误:
mysql_query ("INSERT INTO profile_tag (profile_id, tag_id)
(SELECT profile_id FROM profile WHERE username = '$username'),
(SELECT tag_id FROM tag WHERE tag = '$music' OR tag = '$sports' OR tag = '$tech')");
但是,我可以使用单个SELECT
语句而不是两个语句来完成INSERT
。
我收到的错误:
查询无效:您的SQL语法有错误;在第1行的
'(SELECT tag_id FROM tag WHERE tag = '' OR tag = 'sports' OR tag = '')'
附近查看与MySQL服务器版本相对应的手册,以获得正确的语法
就像错误所说的那样,语法是不正确的。插入的值必须与列定义中的值数相匹配。
INSERT INTO profile_tag (profile_id, tag_id)
SELECT
profile_id, tag_id
FROM
profile
CROSS JOIN tag
WHERE
username = ?
AND tag IN (?, ?, ?)
请注意,如果为每个输入找到一个tag
值,这将插入多个行,但我相信这正是您想要的。
您可以使用VALUES
子句
insert into profile_tag(user_id, tag_id) values
((select id from users where username = 'alice'),
(select id from tags where tag = 'music'));
http://sqlfiddle.com/#!2/76439/1/0
mysql_query ("INSERT INTO profile_tag (profile_id, tag_id)
(SELECT profile.profile_id, tag.tag_id FROM profile LEFT JOIN tag ON 1 WHERE profile.username = '$username' AND tag.tag IN ('$music', '$sports', '$tech'))");