我正在尝试从一个表复制到另一个表,它工作正常,但我还需要在新表中插入当前用户ID。我还没弄明白怎么做。通常我会做类似SET user_id = :user_id
的事情,但我从来没有使用过这个。
这是我的代码:
$q = $conn->prepare("INSERT INTO user_themes(title,code_entry,code_home,code_css,code_category,code_archive)
SELECT title, code_entry, code_home, code_css, code_category, code_archive FROM blogy_themes WHERE id = :id");
所以我的问题是:
如何将user_id
(假设user_id为1)插入到新表中?
答案 0 :(得分:1)
查询的基础不会改变。只需将值添加到列和`SELECT语句:
INSERT INTO user_themes(user_id, title,code_entry,code_home,code_css,code_category,code_archive)
SELECT :user_id, title, code_entry, code_home, code_css, code_category, code_archive
FROM blogy_themes WHERE id = :id
然后执行时,绑定:id
和:user_id
。
答案 1 :(得分:0)
根据我的理解,您希望拥有在所有新记录中执行操作的用户的ID,您可以执行以下操作:
$q = $conn->prepare("INSERT INTO user_themes(user_id,title,code_entry,code_home,code_css,code_category,code_archive)
SELECT '" . (int) $userid ."' as user_id, title, code_entry, code_home, code_css, code_category, code_archive FROM blogy_themes WHERE id = :id");
这是一种解决方法,以便继续按原样使用查询。 第二种选择更多" ORM"方法,您可以查询user_themes表中的所有相关记录,迭代结果集,克隆每一行并使用新的user_id保存。