Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/236.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 将两个字段合并到一个表中,可存储43000条记录_Php_Mysql_Loops_While Loop - Fatal编程技术网

Php 将两个字段合并到一个表中,可存储43000条记录

Php 将两个字段合并到一个表中,可存储43000条记录,php,mysql,loops,while-loop,Php,Mysql,Loops,While Loop,我有一个代码,我想将同一个表中的两个字段合并到同一个表中的另一个字段,并从另一个表中填写StateName 位置表有43000条记录 我想改变这个 Table: states_cache Table: locations StateName | StateInitials LocationID | City | StateInitials | StateName | Combo ------------------------ -----

我有一个代码,我想将同一个表中的两个字段合并到同一个表中的另一个字段,并从另一个表中填写StateName

位置表有43000条记录

我想改变这个

Table: states_cache            Table: locations
StateName | StateInitials      LocationID |  City       | StateInitials | StateName | Combo
------------------------       --------------------------------------------------------------
Missouri  |  MO                32500      | Springfield | MO            |           |
Kansas    |  KS                34151      | Topeka      | KS            |           |
对此

Table: states_cache            Table: locations
StateName | StateInitials      LocationID |  City       | StateInitials | StateName | Combo
------------------------       --------------------------------------------------------------
Missouri  |  MO                32500      | Springfield | MO            | Missouri  | Springfield MO
Kansas    |  KS                34151      | Topeka      | KS            | Kansas    | Topeka KS
这是我的密码

我试着运行它,它只是给我加载屏幕

$conn = &$GLOBALS["dbSettings"]->GetConnection();

$sql = "SELECT City, StateInitials, LocationID, StateInitials FROM locations";
            $rs = $conn->Execute($sql);

        while (!$rs->EOF)
            { 
                $sql2 = "SELECT StateName FROM states_cache WHERE StateInitials ='" . $rs->fields[3] . "'";
                $rs2 = $conn->Execute($sql2);
                if ($rs2 === false) die('select error: ' . $conn->ErrorMsg() . " SQL: " . $sql2);

                $sql1 = "UPDATE locations SET StateName ='" . $rs2->fields[0] . "',  combo ='" . $rs->fields[0] . " " . $rs->fields[1] ."' where LocationID =" . $rs->fields[2];
                $rs1 = $conn->Execute($sql1);
                if ($rs1 === false) die('select error: ' . $conn->ErrorMsg() . " SQL: " . $sql1);
                echo $sql1;
            }

            ?>
-------------------解决------------------------------

UPDATE locations 
  JOIN states_cache
    ON states_cache.StateInitials = locations.StateInitials
SET states_cache.StateName = locations.StateName, locations.Combo = CONCAT(locations.City, ' ', locations.StateInitials) 

感谢Marc B为我指出了一个更简单的解决方案

无需在循环中运行这些查询。您可以通过单个
更新来完成此操作。。。加入
query。好的,我会研究的,谢谢这是如此的简单…更新位置加入状态在状态上的状态缓存。状态初始值=位置。状态初始值设置状态\u缓存。状态名称=位置。状态名称,位置。组合=CONCAT(locations.City',,locations.StateInitials)
UPDATE locations 
  JOIN states_cache
    ON states_cache.StateInitials = locations.StateInitials
SET states_cache.StateName = locations.StateName, locations.Combo = CONCAT(locations.City, ' ', locations.StateInitials)