Php 根据电话前缀填充区域字段
是否可以根据存储在另一个字段中的数据填充字段?我解释得更清楚一些:在数据库中有一个字段“telnum”(电话号码),其中存储了带有国际前缀的telepnone号码。我可以使用php命令填充每个数字前缀函数中的“country”字段吗 这是数据库:Php 根据电话前缀填充区域字段,php,mysql,Php,Mysql,是否可以根据存储在另一个字段中的数据填充字段?我解释得更清楚一些:在数据库中有一个字段“telnum”(电话号码),其中存储了带有国际前缀的telepnone号码。我可以使用php命令填充每个数字前缀函数中的“country”字段吗 这是数据库: ______________________________________________ | id | telnum | name | 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之后。。。结束
添加,大陆=案例**用大陆代码替换国家名称**结束