2014-05-18 307 views
0

我剛剛開始使用PHP/MySQl編寫代碼,因此您將從下面的代碼中瞭解爲什麼我要將其更新到PDO,這裏有所有類型的代碼都不會在此處發佈。INSERT INTO SELECT PDO查詢

我已經能夠進行使用PDO基本INSERT,即

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

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

,但我被困在INSERT INTO ...下面SELECT查詢。基本上,我從表格中獲取信息並嘗試插入第二個表格。

$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嗎?

+0

'( '身份證','USER_ID ','collection_id')'<---它不會起作用 – zerkms

+0

如果你返回多於1行,你不能做一個選擇,在那裏,使用 –

+0

「但我被卡在INSERT INTO中。 .. SELECT查詢下面「--- ---實際上完全相同:用佔位符替換所有變量 – zerkms

回答

2

很簡單:

$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$_POST['collection_id']$_POST['collection_id']作爲參數,你就大功告成了:)

+0

非常感謝你Niet。這工作完美。 –