在PHP和MySQL中仅将特定行从一个表复制到另一个表

时间:2014-04-24 22:09:22

标签: php mysql text row

我有一个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中使用它?

2 个答案:

答案 0 :(得分:1)

而不是你可以使用foreach。

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

答案 1 :(得分:0)

我使用了代码:

$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()我删除了空格,一切正常。我希望我写它可以理解。