This question already has answers here:
INSERT with SELECT
                                
                                    (7个答案)
                                
                        
                                5年前关闭。
            
                    
我正在尝试完成INSERT语句,而我的一个字段要求我从数据库中提取数据并在INSERT语句中使用它。例如。

$stmt = $dbh->prepare("INSERT INTO city(id, cityname, stateID) ".
                      "VALUES ('NULL', :city, :stID)");


在这一点上,我将绑定值并执行。但是我想使用select语句来查找stID的值。

SELECT id FROM state WHERE statename=NY


我是否需要将查询保存在变量中,然后使用该变量执行INSERT语句,或者是否可以使用PDO在我的insert语句中添加select语句?

我觉得这个问题不是重复的,因为被称为重复的问题并未讨论如何使用PDO完成此任务。我没有意识到可以将select语句直接放在VALUES参数内。

最佳答案

只需将SELECT嵌套到位:

INSERT INTO city(id, cityname, stateID)
VALUES ('NULL', :city,
    (SELECT stID from state WHERE stname = :stname LIMIT 1))


然后绑定剩下的参数,即:city和:stname。我猜剩下的表和字段名称。

09-28 01:44