Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 帮助编写查询_Php_Mysql - Fatal编程技术网

Php 帮助编写查询

Php 帮助编写查询,php,mysql,Php,Mysql,我有一个csv文件,看起来像 手机,短信 手机,短信 手机、短信 我有一个数据库表,它 id,移动电话 id,移动电话 手机号码 我正在使用fgetcsv将csv读入数组 我想要得到的是一个数组 手机、短信、id 手机、短信、id 手机,短信,身份证 我能问的一个问题是 数组中的每一行都从表中选择id,其中mobile= 但考虑到有2000行可能会变得混乱 更好的方法是什么?将CSV文件加载到数据库中,然后在两个表上进行连接。如果您希望在PHP中而不是在数据库中进行连接,正如@Ignacio所建

我有一个csv文件,看起来像

手机,短信
手机,短信
手机、短信

我有一个数据库表,它

id,移动电话
id,移动电话
手机号码

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

我想要得到的是一个数组

手机、短信、id
手机、短信、id
手机,短信,身份证

我能问的一个问题是

数组中的每一行都从表中选择id,其中mobile=

但考虑到有2000行可能会变得混乱


更好的方法是什么?

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

如果您希望在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;
        }
    }
}