Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/79.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.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中的相关文本字段从SQL数据库中“翻译”编码数字_Php_Sql_Database - Fatal编程技术网

基于PHP中的相关文本字段从SQL数据库中“翻译”编码数字

基于PHP中的相关文本字段从SQL数据库中“翻译”编码数字,php,sql,database,Php,Sql,Database,我有一堆代表美国每个县的编码数字。每个县的代码都是唯一的,由两位数的州代码和基于县的三位数奇数组成 例如,在我的SQL数据库中,Texas的代码是42。德克萨斯州达拉斯县为42113;德克萨斯州道森县是42115 我试图将这些代码与另一个包含类似代码但状态代码不同的DB表进行匹配。在这个数据库中,德克萨斯州的代码是45,所以达拉斯县是45113。因此,即使我有正确的数据,代码也不匹配 下面是我目前如何提取数据的 $result = mysql_query("SELECT county_id,co

我有一堆代表美国每个县的编码数字。每个县的代码都是唯一的,由两位数的州代码和基于县的三位数奇数组成

例如,在我的SQL数据库中,Texas的代码是42。德克萨斯州达拉斯县为42113;德克萨斯州道森县是42115

我试图将这些代码与另一个包含类似代码但状态代码不同的DB表进行匹配。在这个数据库中,德克萨斯州的代码是45,所以达拉斯县是45113。因此,即使我有正确的数据,代码也不匹配

下面是我目前如何提取数据的

$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与大多数编码论坛不同,这里不是我有这个问题的地方,你有这个解决方案。。。一、 作为一个用户,我们在这里发现了非常好的方法、良好的实践和现代的编码方式,因此我得出结论,我们现在正处于这样一个位置,我们需要教会用户不要使用坏的实践、坏的结构、垃圾桶和所有埋在时间里的东西。