如何使用单个MySQL查询来更改mysql中的多个表?

时间:2012-09-03 19:11:09

标签: php mysql alter-table

我可以通过在MySQL中为每个表写一个查询来改变表。

ALTER TABLE `nom_table` ADD `images` VARCHAR(255) NULL AFTER `link`

但是当我在单行编写许多alter语句时,Mysql在语法中显示错误。

ALTER TABLE `nom_table` ADD `data1` VARCHAR(255) NULL AFTER `link`
ALTER TABLE `nom_table` ADD `data2` VARCHAR(255) NULL AFTER `link`

我必须多次在PHP中执行此操作,因此如果我运行许多alter语句的单个查询,那么服务器的负载将会非常少。

任何解决方案?

2 个答案:

答案 0 :(得分:2)

你可以写:

ALTER TABLE `nom_table`
    ADD `data1` VARCHAR(255) NULL AFTER `link`,
    ADD `data2` VARCHAR(255) NULL AFTER `link`;

请参阅complete syntax here

但是,您无法更改单个查询中的不同表格。

答案 1 :(得分:0)

这对我有用......

$ContentTables

Array
(
    [11] => Array
        (
            [db_table] => Content_Tips
            [label2] => Tip
        )

/* .... same for 11 more tables... */


    foreach ($ContentTables as $table => $values ) {

    $thisTable = $values['db_table'];

    $addColumns = mysql_query("
        ALTER TABLE $thisTable
        ADD `ranking` INT(3) AFTER `edit_date`,
        ADD `frequency` INT(3) AFTER `ranking` ")

    or die( 'Opps...something wrong in the backroom....'.$thisTable.'...1'.mysql_error());

    if ($addColumns) { echo $thisTable.' has been altered...<br/>'; }
}