如何在 MySQL INSERT 查询中将 PHP 变量与 SELECT 数据混合?

How can I mix PHP variables with SELECT data in a MySQL INSERT query?

我有一个数据库 table1 (id, name_id, value)table2 (id, name, other)

然后我有一些数据

$name = 'a name';
$value = 'a value';

我想使用值 $name 作为 table2.name 来获取 table2.id 并将其作为 table1.name_id 插入 table1 但我也想将 $value 插入 table1.

在执行 SELECT 时我可以使用 JOIN,但我发现 INSERT 的唯一方法是使用 SELECT 查询而不是 VALUES

但是,我想使用来自 table2 (id) 的值以及插入 $value 但是 SELECT 方法似乎只从一个复制数据table (table2) 给另一个

编辑:伪 SQL

<pre>INSERT INTO `table1` (`name_id`, `value`)
VALUES ((`table2`.`id` WHERE `table2`.`name` = $name), $value)</pre>
insert into table1 (name_id, other)
select id, 'just some static data or data from a variable'
from table2
where name = '$name'

我插入了变量以提高可读性。但我建议改用 Prepared Statements

这样的事情应该有效(假设 PDO 因为你没有指定):

$preparedStmt = $pdo->prepare("INSERT INTO table1 (name_id,value)
    SELECT id, :value FROM table2 WHERE name=:name");
$preparedStmt->execute(array('name'=>$name,'value'=>$value));