さまざまな言語で翻訳を保存するための somename_fr のような列名を持つ複数のテーブルを持つ mysql データベースがあります。
それらの名前を somename_fr_CA に変更する必要があるため、_CA の部分を追加します。
一度にすべてを更新するクエリでこれを行うことは可能ですか?
$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
。
資力: