MySQL:使用跨表SELECT准备语句

时间:2014-12-24 04:37:03

标签: php mysql prepared-statement sql-insert

我正在尝试将值插入MySQL数据库。我可能会这样做:

INSERT INTO `records` (`id`, `name`, `town`) VALUES (?, ?, ?)

然后使用预准备语句填写相应的值(来自用户输入)。

但是,现在,我想说我想从同一数据库中的另一个表中绘制一个值...完全独立于用户。例如,让我们说town存储在其他地方......

INSERT INTO `records` (`id`, `name`, `town`)
VALUES (?, ?, SELECT `town` FROM `otherTable` WHERE `someColumb`=1)

现在只有idname由PHP准备好的语句提供。

我看到了一些关于使用SELECTUNION ALL的帖子,但我无法正确实施它(这也没有用):

INSERT into `records`
(`period`, `fullname`, `username`, `inout`, `outWhere`)
"SELECT `value` from `settings` WHERE `name`='CURRENT_PERIOD', ?, ?, ?, ?

我希望自动填充第一个值period,但最后四个应该来自预备语句。

非常感谢 - 我还在学习MySQL语法。

2 个答案:

答案 0 :(得分:1)

"INSERT into `records`
(`period`, `fullname`, `username`, `inout`, `outWhere`)
SELECT `value`, ?, ?, ?, ? from `settings` WHERE `name`= ?";

然后用bind_param

绑定参数

答案 1 :(得分:1)

OP在这里......虽然接受的答案更好,但我只是想在这里记录我的发现:

以下内容适用于"加入"多个表一起:

SELECT table1.*, table2.*, ?, ?, ?
FROM table1, table2
WHERE table1.col1="something" AND table2.col2="anotherthing";

然后可以将此语句与准备好的INSERT一起使用。