Php 插入到SELECT PDO查询中

Php 插入到SELECT PDO查询中,php,mysql,pdo,Php,Mysql,Pdo,我刚刚开始用PHP/MySQl编写,所以您可以从下面的代码中理解,为什么我要将它更新为PDO,这里没有任何东西 我已经能够使用PDO执行基本插入,即 $sql= "INSERT INTO user_collections ('id','user_id','collection_id') VALUES('',?,?)"; $insertsql=$db_connect->prepare($sql); $insertsql->execute(array($newUserID,$colle

我刚刚开始用PHP/MySQl编写,所以您可以从下面的代码中理解,为什么我要将它更新为PDO,这里没有任何东西

我已经能够使用PDO执行基本插入,即

$sql=
"INSERT INTO user_collections
('id','user_id','collection_id')
VALUES('',?,?)";

$insertsql=$db_connect->prepare($sql);
$insertsql->execute(array($newUserID,$collection_id));

但我被卡在插入到。。。选择下面的查询。基本上,我从表单中获取信息,从表中获取信息,并尝试插入到第二个表中

$sql=
"INSERT INTO table1 (id,user_id,collection_id,sticker_id,status)
SELECT '', '$newUserID' ,'".$_POST['collection_id']."',t2.sticker_number,'N')."'
FROM table2 t2
WHERE t2.collection_id='".$_POST['collection_id']."'";
$insertsql=mysqli_query($db_connect ,$sql);
我知道在目前的状态下,上面的设计是可行的,但显然不是最好的设计。有人能帮我把它翻译成PDO吗

非常简单:

$sql = "
    INSERT INTO `table1` (`id`, `user_id`, `collection_id`, `sticker_id`, `status`)
    SELECT '', ?, ?, `t2`.`sticker_number`, 'N'
    FROM `table2` AS `t2`
    WHERE `t2`.`collection_id` = ?
";

现在只需准备好查询并将$newUserID、$\u POST['collection\u id']和$\u POST['collection\u id']作为参数传递,就可以完成所有操作:

'id'、'user\u id'、'collection\u id'如果返回的行数超过1行,则无法进行类似的选择,请使用where in。但我无法插入到。。。选择下面完全相同的查询:将所有变量替换为placeholders@RPM:如果返回的行数超过1行,则无法执行这样的选择where为什么这样认为?@zerkms,nevermind,我以为他在使用where的子查询。