2016-12-25 90 views
2

我有兩個表TableATableB,列id,login,pass。另外我有一個PHP數組:$array = [1,3,5]。如何將TableA的行傳送到TableB,其中id等於我的數組的每個值? id是自動增量的,並且必須是唯一的。 在我的頭上,它看起來是這樣的:如何從一個表中轉移多行到其他表(SQL)

INSERT INTO TableB (`login`, `pass`) 
SELECT `login`, `pass` FROM TableA WHERE `id` = $array[0] 
AND `id` = $array[1] AND `id` = $array[2]; 

但它不工作

有沒有機會做,在循環使用WHILE

+0

請採取[旅遊](http://stackoverflow.com/tour)。 –

+1

你的id不能同時有多個值*,試試'WHERE \'id \'IN(1,3,5)'(顯然是在這裏使用你的數組) – ccKep

回答

2

您可以使用的語句,如本:

$ids = [1,3,5]; 
$query = "INSERT INTO `TableB` (`login`, `pass`) SELECT `login`,`pass` FROM `TableA` WHERE `id` IN (".implode(",", $ids).");"; 

雖然:您應該使用準備好的語句和參數來解決這個問題,但這個答案只是爲了顯示語法。

+0

Thanx。它效果很好 –

1

它很容易讓我們說你正在使用的mysqli:

$query= "SELECT * FROM TableA limit 3"; 
//takes first 3 rows from TableA 
//$con being the connection string in config file 
$result = mysqli_query($con,$query); 
while($row = mysqli_fetch_array($result)){ 
//takes each row by row 
$username = $row['username']; 
$password = $row['password']; 
//now that we initiated variables the sql query 
$query1 = "INSERT INTO TableB (username, password) VALUES ('$username', '$password'); 
mysqli_query($con,$query1); 
} 

希望這有助於

編輯: 我剛纔讀,它應該有一個數組,所以你應該查詢改成這樣:

for($i=0; $i<count(array), $i++){ 

$query= "SELECT * FROM TableA WHERE ID = '$array[i]'"; 

//$con being the connection string in config file 
$result = mysqli_query($con,$query); 
while($row = mysqli_fetch_array($result){ 
//takes each row by row 
$username = $row['username']; 
$password = $row['password']; 
//now that we initiated variables the sql query 
$query1 = "INSERT INTO TableB (username, password) VALUES ('$username', '$password'); 
mysqli_query($con,$query1); 
} 
} 
+1

你的代碼有不封閉的護腕('while '-line)和字符串(查詢中的密碼列)。 – ccKep

+0

謝謝你現在更新 – eBourgess

+1

Thanx for answer! –

相關問題