0

さまざまな言語で翻訳を保存するための somename_fr のような列名を持つ複数のテーブルを持つ mysql データベースがあります。

それらの名前を 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 に答える