Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/72.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,是否可以根据存储在另一个字段中的数据填充字段?我解释得更清楚一些:在数据库中有一个字段“telnum”(电话号码),其中存储了带有国际前缀的telepnone号码。我可以使用php命令填充每个数字前缀函数中的“country”字段吗 这是数据库: ______________________________________________ | id | telnum | name | country | --------------------------

是否可以根据存储在另一个字段中的数据填充字段?我解释得更清楚一些:在数据库中有一个字段“telnum”(电话号码),其中存储了带有国际前缀的telepnone号码。我可以使用php命令填充每个数字前缀函数中的“country”字段吗

这是数据库:

  ______________________________________________
  |  id  |   telnum   |   name   |   country   |
  ----------------------------------------------
  |  01  | 003912377  |   Smith  |             |
  |  02  | 004412345  |   White  |             |
  |  03  | 005454321  |   Lopez  |             |
“php命令”应该与我的sql表中的国家名称的每个不同前缀相关联。在这个例子中,我们有0039->意大利,0044->英国,0054->阿根廷。。。等等 结果必须是:

  ______________________________________________
  |  id  |   telnum   |   name   |   country   |
  ----------------------------------------------
  |  01  | 003912377  |   Smith  |   Italy     |
  |  02  | 004412345  |   White  |    UK       |
  |  03  | 005454321  |   Lopez  |  Argentina  |
提前感谢大家的帮助。
您好,Mattew

您可以在查询中使用
case
语句

update table
set country =
case 
when left(telnum,4) = 0039 then 'Italy'
when left(telnum,4) = 0044 then 'UK'
when left(telnum,4) = 0054 then 'Argentina'
else ''
end

您可以在查询中使用
case
语句

update table
set country =
case 
when left(telnum,4) = 0039 then 'Italy'
when left(telnum,4) = 0044 then 'UK'
when left(telnum,4) = 0054 then 'Argentina'
else ''
end

如果您已经有国家代码映射
(这意味着另一个带有国家代码+国家名称的表),
可以执行内部联接,如:-

 select u.id, u.telnum, u.name, c.country_name
 from user as u
 inner join country c
 on left(u.telnum, 4) = c.country_code
 ...;
否则,您可以将映射放入PHP配置文件中,
格式类似

$country_code = array();
$country_code['0039'] = ...;
然后,当您从mysql迭代结果时,
您可以相应地进行映射

如果您已经有国家代码映射
(这意味着另一个带有国家代码+国家名称的表),
可以执行内部联接,如:-

 select u.id, u.telnum, u.name, c.country_name
 from user as u
 inner join country c
 on left(u.telnum, 4) = c.country_code
 ...;
否则,您可以将映射放入PHP配置文件中,
格式类似

$country_code = array();
$country_code['0039'] = ...;
然后,当您从mysql迭代结果时,

您可以相应地进行映射

mySQL查询方式:

UPDATE telcountry_table
SET country =
CASE 
   WHEN left(telnum,4) = 0093 THEN 'Afghanistan'
   WHEN left(telnum,5) = 00355 THEN 'Albania'
   WHEN left(telnum,5) = 00213 THEN 'Algeria'
   .
   .
   .
   ELSE ''
END
$call_code = array();
$call_code['93']='Afghanistan';
$call_code['355']='Albania';
$call_code['213']='Algeria';
.
.
.

$func = function($value) {
   $code2=substr($value['telnum'],2,2);
   $code3=substr($value['telnum'],2,3);
   $code4=substr($value['telnum'],2,4);
   if(array_key_exists($code2,$call_code))
      $value['country']=$call_code[$code2];
   else if(array_key_exists($code3,$call_code))
      $value['country']=$call_code[$code3];
   else if(array_key_exists($code4,$call_code))
      $value['country']=$call_code[$code4];
   return $value;
};

$countries=array_map($func,$data);
查询的完整版本:

php方式:

UPDATE telcountry_table
SET country =
CASE 
   WHEN left(telnum,4) = 0093 THEN 'Afghanistan'
   WHEN left(telnum,5) = 00355 THEN 'Albania'
   WHEN left(telnum,5) = 00213 THEN 'Algeria'
   .
   .
   .
   ELSE ''
END
$call_code = array();
$call_code['93']='Afghanistan';
$call_code['355']='Albania';
$call_code['213']='Algeria';
.
.
.

$func = function($value) {
   $code2=substr($value['telnum'],2,2);
   $code3=substr($value['telnum'],2,3);
   $code4=substr($value['telnum'],2,4);
   if(array_key_exists($code2,$call_code))
      $value['country']=$call_code[$code2];
   else if(array_key_exists($code3,$call_code))
      $value['country']=$call_code[$code3];
   else if(array_key_exists($code4,$call_code))
      $value['country']=$call_code[$code4];
   return $value;
};

$countries=array_map($func,$data);

脚本的完整版本:

mySQL查询方式:

UPDATE telcountry_table
SET country =
CASE 
   WHEN left(telnum,4) = 0093 THEN 'Afghanistan'
   WHEN left(telnum,5) = 00355 THEN 'Albania'
   WHEN left(telnum,5) = 00213 THEN 'Algeria'
   .
   .
   .
   ELSE ''
END
$call_code = array();
$call_code['93']='Afghanistan';
$call_code['355']='Albania';
$call_code['213']='Algeria';
.
.
.

$func = function($value) {
   $code2=substr($value['telnum'],2,2);
   $code3=substr($value['telnum'],2,3);
   $code4=substr($value['telnum'],2,4);
   if(array_key_exists($code2,$call_code))
      $value['country']=$call_code[$code2];
   else if(array_key_exists($code3,$call_code))
      $value['country']=$call_code[$code3];
   else if(array_key_exists($code4,$call_code))
      $value['country']=$call_code[$code4];
   return $value;
};

$countries=array_map($func,$data);
查询的完整版本:

php方式:

UPDATE telcountry_table
SET country =
CASE 
   WHEN left(telnum,4) = 0093 THEN 'Afghanistan'
   WHEN left(telnum,5) = 00355 THEN 'Albania'
   WHEN left(telnum,5) = 00213 THEN 'Algeria'
   .
   .
   .
   ELSE ''
END
$call_code = array();
$call_code['93']='Afghanistan';
$call_code['355']='Albania';
$call_code['213']='Algeria';
.
.
.

$func = function($value) {
   $code2=substr($value['telnum'],2,2);
   $code3=substr($value['telnum'],2,3);
   $code4=substr($value['telnum'],2,4);
   if(array_key_exists($code2,$call_code))
      $value['country']=$call_code[$code2];
   else if(array_key_exists($code3,$call_code))
      $value['country']=$call_code[$code3];
   else if(array_key_exists($code4,$call_code))
      $value['country']=$call_code[$code4];
   return $value;
};

$countries=array_map($func,$data);

脚本的完整版本:

嘿,非常感谢!我发现你答案的代码非常简单和有用,而且它工作得非常完美。我是否可以使用相同的脚本来填充更多字段?例如,我想在字段中添加大陆“eu”,前缀是意大利,“america”代表阿根廷。。。等等提前谢谢。嘿,非常感谢你!我发现你答案的代码非常简单和有用,而且它工作得非常完美。我是否可以使用相同的脚本来填充更多字段?例如,我想在字段中添加大陆“eu”,前缀是意大利,“america”代表阿根廷。。。等等提前谢谢,非常感谢!正如我对另一位朋友所说的,我发现你答案的代码非常简单和有用,而且它工作得非常完美(我指的是你的nswer的“MySQL查询方式”)。我是否可以使用相同的脚本结构来填充更多字段?例如,我想在字段中添加大陆“eu”,前缀是意大利,“america”代表阿根廷。。。等等否则我需要如何修改全局脚本(MyQSL方式)?提前谢谢。只需以相同方式设置另一列:在
country=CASE之后。。。结束
添加,大陆=案例**用大陆代码替换国家名称**结束非常感谢!正如我对另一位朋友所说的,我发现你答案的代码非常简单和有用,而且它工作得非常完美(我指的是你的nswer的“MySQL查询方式”)。我是否可以使用相同的脚本结构来填充更多字段?例如,我想在字段中添加大陆“eu”,前缀是意大利,“america”代表阿根廷。。。等等否则我需要如何修改全局脚本(MyQSL方式)?提前谢谢。只需以相同方式设置另一列:在
country=CASE之后。。。结束
添加,大陆=案例**用大陆代码替换国家名称**结束