0

我有一个 mysql 数据库,其中包含多个表,这些表具有诸如 somename_fr 之类的列名,用于存储不同语言的翻译。

我需要将它们重命名为 somename_fr_CA,所以只需添加 _CA 部分。

这可能与一次更新它们的查询有关吗?

4

1 回答 1

1
$tableFields = array();
$result = mysql_query("SHOW COLUMNS FROM mytable");
if (mysql_num_rows($result) > 0) {
    while ($row = mysql_fetch_assoc($result)) {
        if(substr($row['Field'], -3) == "_fr") {
            mysql_query("alter table tablename change `".$row['Field']."` `".$row['Field']."_CA`) ;
        }
    }
}

为什么要使用正则表达式?只需使用SHOW COLUMNS查询并循环结果并找出需要重命名的表名并执行查询。在循环中,我使用 substr 获取字段名的最后 3 个字符,如果它们等于“_fr”,则触发额外的 SQL 查询ALTER TABLE

资源:

  1. 列出 mysql 表字段http://php.net/manual/en/function.mysql-list-fields.php
  2. substr() http://php.net/manual/en/function.substr.php mysql
  3. 更改表:http ://dev.mysql.com/doc/refman/5.1/en/alter-table.html
于 2013-10-11T01:07:22.063 回答