如何在 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));
我有一个数据库 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));