2011-04-18 78 views
0

我有一个CSV文件看起来像帮助书面查询

移动,消息
移动,消息
移动,消息

我有有

数据库表

ID,手机
ID,手机
ID,移动

我正在读的CSV成使用fgetcsv阵列。

我想直到结束是一个数组,看起来像

移动,消息,ID
移动,消息,ID
移动,消息,ID

一个查询我可以做的是,在阵列中

的foreach行做select id from table where mobile = ...;

但看到有2000行,可以让杂乱,

这样做的更好方法是什么?

回答

1

如果你想这样做在PHP中,而不是在数据库中,通过@Ignacio的建议,这里有一个可能性:

/* ... $array = fgetcsv ... */ 

$mobiles = array_unique(array_map(create_function('$a', 'return $a["mobile"];'), $array)); 
$mobiles = array_map('mysql_real_escape_string', $mobiles); 

$query = "SELECT `id`, `mobile` FROM `table` 
      WHERE `mobile` IN ('" . join("', '", $mobiles) . "')"; 

/* ... $mobiles = mysql_query ... */ 

foreach ($array as &$row) { 
    foreach ($mobiles as $mobile) { 
     if ($row['mobile'] == $mobile['mobile']) { 
      $row['id'] = $mobile['id']; 
      continue 2; 
     } 
    } 
} 
0

将CSV文件加载到数据库中,然后在两个表上进行连接。