【发布时间】:2014-12-24 04:37:02
【问题描述】:
我正在尝试将值插入 MySQL 数据库。我可能会这样做:
INSERT INTO `records` (`id`, `name`, `town`) VALUES (?, ?, ?)
然后使用准备好的语句来填写相应的值(这将来自用户输入)。
但是,现在假设我想从同一数据库中的 another 表中提取一个值...完全独立于用户。例如,假设town 存储在其他地方...
INSERT INTO `records` (`id`, `name`, `town`)
VALUES (?, ?, SELECT `town` FROM `otherTable` WHERE `someColumb`=1)
现在只有 id 和 name 由 PHP 准备好的语句提供。
我看到了一些关于使用SELECT 和UNION ALL 的帖子,但我无法正确实现它(这也不起作用):
INSERT into `records`
(`period`, `fullname`, `username`, `inout`, `outWhere`)
"SELECT `value` from `settings` WHERE `name`='CURRENT_PERIOD', ?, ?, ?, ?
我想自动填充第一个值period,但最后四个应该来自准备好的语句。
非常感谢 - 我还在学习 MySQL 语法。
【问题讨论】:
-
我不确定问题出在哪里。您只需按照通常编写的方式编写 SQL 查询,然后将所有用户提供的数据部分替换为
?占位符以及您通过准备好的语句输入的值。准备好的语句不关心查询的整体复杂程度,也不关心是否涉及多个表。 -
我是这么想的……但最后一条语句不起作用。
-
最后一条语句缺少
VALUES关键字和值周围的括号。 -
我在重新阅读手册页后撤回了之前的答案。但看在老天的份上,找出错误(根据php.net/manual/en/mysqli.error-list.php)并查看它们!
-
好建议;会的。
标签: php mysql prepared-statement sql-insert