我有一个CSV文件看起来像帮助书面查询
移动,消息
移动,消息
移动,消息
我有有
数据库表ID,手机
ID,手机
ID,移动
我正在读的CSV成使用fgetcsv
阵列。
我想直到结束是一个数组,看起来像
移动,消息,ID
移动,消息,ID
移动,消息,ID
一个查询我可以做的是,在阵列中
的foreach行做select id from table where mobile = ...;
但看到有2000行,可以让杂乱,
这样做的更好方法是什么?
我有一个CSV文件看起来像帮助书面查询
移动,消息
移动,消息
移动,消息
我有有
数据库表ID,手机
ID,手机
ID,移动
我正在读的CSV成使用fgetcsv
阵列。
我想直到结束是一个数组,看起来像
移动,消息,ID
移动,消息,ID
移动,消息,ID
一个查询我可以做的是,在阵列中
的foreach行做select id from table where mobile = ...;
但看到有2000行,可以让杂乱,
这样做的更好方法是什么?
如果你想这样做在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;
}
}
}
将CSV文件加载到数据库中,然后在两个表上进行连接。