2013-06-25 58 views
1

我正在使用SELECT從MySQL中檢索某些項目。當語句正在讀取時,我想要將每個返回的行並將某些信息從它移動到另一個表中。在數據庫表之間移動對象

$stmt = $mysqli->prepare("SELECT info FROM table"); 
$stmt->execute(); 
$stmt->bind_result($info); 

$stmt2 = $mysqli->prepare("INSERT INTO another_table (info) VALUES (?)"); 
$stmt2->bind_param('s', $info); 

while ($stmt->fetch()) { 

    //$info is different for each loop 
    $stmt2->execute(); 

} 

這是行不通的。 $stmt2->bind_param()後沒有任何反應。但是,我可以在while循環中使用$info填充數組,然後使用相同的確切數據庫代碼將數組中的信息插入另一個表中。但是,該陣列可能會變得太大並導致內存問題。

回答

3

那麼,你通常會把bind_param放在循環中。但是你可能能夠在一個查詢中做到這一點:

INSERT INTO another_table(info) SELECT info FROM table; 
+0

你能解釋一下這個查詢的工作原理嗎?如果我想包含來自PHP的變量,以便它們與第二個表中的「info」包含在同一行中,該怎麼辦?我如何將它們插入到查詢中(我會在哪裏放置問號)? –

+0

@JackHumphries:'INSERT INTO'可以使用'SELECT'從另一個表中獲取值,這就是它的作用。如果你想爲每一行放入相同的值,它看起來像是INSERT INTO another_table(info,other_column)SELECT info,?從表格中,我想... – Ryan

相關問題