基于PHP中的相关文本字段从SQL数据库中“翻译”编码数字
我有一堆代表美国每个县的编码数字。每个县的代码都是唯一的,由两位数的州代码和基于县的三位数奇数组成 例如,在我的SQL数据库中,Texas的代码是42。德克萨斯州达拉斯县为42113;德克萨斯州道森县是42115 我试图将这些代码与另一个包含类似代码但状态代码不同的DB表进行匹配。在这个数据库中,德克萨斯州的代码是45,所以达拉斯县是45113。因此,即使我有正确的数据,代码也不匹配 下面是我目前如何提取数据的基于PHP中的相关文本字段从SQL数据库中“翻译”编码数字,php,sql,database,Php,Sql,Database,我有一堆代表美国每个县的编码数字。每个县的代码都是唯一的,由两位数的州代码和基于县的三位数奇数组成 例如,在我的SQL数据库中,Texas的代码是42。德克萨斯州达拉斯县为42113;德克萨斯州道森县是42115 我试图将这些代码与另一个包含类似代码但状态代码不同的DB表进行匹配。在这个数据库中,德克萨斯州的代码是45,所以达拉斯县是45113。因此,即使我有正确的数据,代码也不匹配 下面是我目前如何提取数据的 $result = mysql_query("SELECT county_id,co
$result = mysql_query("SELECT county_id,county,state FROM data GROUP BY county_id");
$rows = array();
while($row = mysql_fetch_array($result)) {
$county_id = $row['county_id'];
$county = $row['county'];
$state = $row['state'];
array_push($rows,$row);
printf ("%s,%s,%s\n<br>", $row['county_id'], $row['county'], $row['state']);
}
这给了我一份美国各州的编码清单
我需要做的是将每个县的id转换为正确的州代码号,同时保持每个代码的最后三位数字不变。即,如果字符串“state”的值为TX,则需要将“45113”中的“45”更改为“42113”。如果字符串“state”的值为WV,则需要将“47*”中的“47”更改为“12*”
出于某种原因,我无法集中精力找到一种有效的方法。有什么想法吗?临时修复,直到你可以从轨道上用核武器攻击你的数据库,这是确保。。。并建立一个适当的:
$county_translations = array(
'bad_id' => 'new_id'
...
);
$fixed_county = $county_translations[$row['county_id']];
临时修复,直到你可以从轨道核弹你的数据库这是唯一的方法,以确保。。。并建立一个适当的:
$county_translations = array(
'bad_id' => 'new_id'
...
);
$fixed_county = $county_translations[$row['county_id']];
我通过使用substr_replace解决了自己的问题
while($row = mysql_fetch_array($result)) {
$county_id = $row['county_id'];
$county_count = $row['county_count'];
$state = $row['state'];
if ($state == "AL")
{
$county_id_al = substr_replace($county_id,'1',0,1);
echo $county_id_al;
echo ",";
echo $county_count;
echo "<br>";
}
等等。这将检查条目的状态,然后根据现有ID代码删除第一个或前两个数字,并将其替换为“正确”的一位或两位代码
那些建议DB需要被放大的人:你是对的,我不知道他们为什么不从一开始就使用正确的FIPS代码。但在这一点上,我们已经吹过了改变它的意义所在 我用substr\u replace解决了自己的问题
while($row = mysql_fetch_array($result)) {
$county_id = $row['county_id'];
$county_count = $row['county_count'];
$state = $row['state'];
if ($state == "AL")
{
$county_id_al = substr_replace($county_id,'1',0,1);
echo $county_id_al;
echo ",";
echo $county_count;
echo "<br>";
}
等等。这将检查条目的状态,然后根据现有ID代码删除第一个或前两个数字,并将其替换为“正确”的一位或两位代码
那些建议DB需要被放大的人:你是对的,我不知道他们为什么不从一开始就使用正确的FIPS代码。但在这一点上,我们已经吹过了改变它的意义所在 我没办法,但条件是-1。你到底是怎么做到这样不一致的数据库的?我认为你需要从头开始建立你的数据库…数据库中的代码不一致,因为数据来自两个不同的政府机构,它们使用两组完全不同的两位数州代码。另一方面,问题是明确的,有预期的结果。数据库是如何/为什么以这种方式构造的,这是一个不同的主题/问题。@BWS与大多数编码论坛不同,这里不是我有这个问题的地方,你有这个解决方案。。。一、 作为一个用户,我在这里发现了非常好的方法、良好的实践和现代的编码方式,所以我得出结论,我们在这个地方,我们需要教用户不要使用坏的实践、坏的结构、垃圾堆和所有埋在时间里的东西。我不能控制,但是条件是-1。你到底是怎么做到这样不一致的数据库的?我认为你需要从头开始建立你的数据库…数据库中的代码不一致,因为数据来自两个不同的政府机构,它们使用两组完全不同的两位数州代码。另一方面,问题是明确的,有预期的结果。数据库是如何/为什么以这种方式构造的,这是一个不同的主题/问题。@BWS与大多数编码论坛不同,这里不是我有这个问题的地方,你有这个解决方案。。。一、 作为一个用户,我们在这里发现了非常好的方法、良好的实践和现代的编码方式,因此我得出结论,我们现在正处于这样一个位置,我们需要教会用户不要使用坏的实践、坏的结构、垃圾桶和所有埋在时间里的东西。