簡體   English   中英

在PHP和MySQL中僅將特定行從一個表復制到另一個表

[英]Copy only specific rows from one table to another in PHP and MySQL

我有一個包含用戶的mysql數據庫,其中包含他們的電子郵件,icq,skype等。文本文件包含每行數據庫中的一些電子郵件地址。 我要做的是將文本文件中每個用戶的數據庫的整個行從一個表復制到另一個表。

這是我的代碼:

$filename="123.txt";
$fp = @fopen($filename, 'r'); 
$array = explode("\n", fread($fp, filesize($filename)));

$id = 1;
while($id <= 500){
$user = $array[$id];
$copy = mysql_query("INSERT INTO newusers SELECT * FROM oldusers WHERE email='$user'");
echo "$user<br>";
$id++;
}

但是它什么也沒有插入到新表中。 但是當我使用類似

mysql_query("INSERT INTO newusers SELECT * FROM oldusers WHERE email='emailofuser@gmail.com'"); 

它工作正常。 我應該如何管理代碼,使其從文本中讀取數據並在SQL中使用它?

而不是您可以使用foreach。

foreach ($array as $user) {
  mysql_query("INSERT INTO newusers SELECT * FROM oldusers WHERE email='{$user}'");
}

我用代碼工作:

$filename="123.txt";   
$handle = fopen($filename, "rb");
$contents = fread($handle, filesize($filename));
$ex = preg_split('/\s+/', $contents);
foreach ($ex as $user) {   
  echo "$user";
  mysql_query("INSERT INTO newusers SELECT * FROM oldusers WHERE email='{$user}'");
  }    
fclose($handle);

問題是,逐行讀取文本文件后,每封電子郵件后我都得到一個空格,因此輸出如下:

some@thing.com any@thing.com goo@gle.net etc.

而且由於每個電子郵件后面都有這個空間,盡管電子郵件是不同的,但是SQL。 但是通過調用preg_split(),我刪除了空格,一切正常。 我希望我寫得可以理解。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM