循环通过mysql数据库记录并更改手机格式

时间:2010-03-03 11:00:21

标签: php mysql legacy-database

我正在处理一个有电话号码的旧数据库表。领域

但问题是所有条目(超过4k)都在变化

格式。

我想知道是否有一种快速方法可以通过使用PHP循环记录并将记录更新为特定的电话格式来修复它们

2 个答案:

答案 0 :(得分:1)

4K根本听起来不像很多记录。

我敢打赌,不同的格式属于有限数量的组合。

我想知道是否可以使用一些明智的SQL查询。如果您的RDBMS具有正则表达式和字符串替换函数,则可以使用一些UPDATE指令对其进行管理。如果没有,任何能够查询数据库,进行字符串替换和更新的语言都可以完成这项工作。

答案 1 :(得分:1)

我同意4k记录不用担心。我建议查询电话号码和表格的主要ID,从电话号码中删除所有字符,然后将其操作为您想要的格式。或者,您可以将其保留为仅数字,并在每次显示时使用前端修改数字。下面是您可以尝试使用的一个未经测试的小脚本。不处理扩展并期望有10个数字。

// mysql_connect stuff
$q = mysql_query("Select phone_id, phone_number From phones");
while($r = mysql_fetch_assoc($q)) {
    $num = ereg_replace("[^0-9]", "", $r['phone_number']);
    if(strlen($num) == 10) {
        $num = substr($num, 0, 3) . '-' . substr($num, 3, 3) . '-' . $substr($num,-4);
    }
    $update = mysql_query("Update phones Set phone_number = '" . $num . "' Where phone_id = " . $r['phone_id']);
    // updated?
}