帮助编写查询

时间:2011-04-18 05:35:26

标签: php mysql

我有一个看起来像

的csv文件
  

移动,留言
  移动,留言
  移动,消息

我有一个

的数据库表
  

id,mobile
  id,mobile
  id,mobile

我正在使用fgetcsv将csv读入数组。

我最终想要的是一个看起来像

的数组

移动,消息,身份
移动,消息,身份
移动,消息,id

我能做的一个问题是,

数组中的foreach行执行select id from table where mobile = ...;

但是看到有2000行可能会变得混乱,

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

2 个答案:

答案 0 :(得分: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;
        }
    }
}

答案 1 :(得分:0)

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