如何用一个mysql查询在mysql中转换多个表


How to ALTER multiple tables in mysql with single MySQL query?

我可以通过在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语句的查询,那么服务器的负载就会非常少。

有什么解决方案吗?

您可以编写:

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

请参阅此处的完整语法。

但是,不能在单个查询中更改不同的表。

这对我有用……

$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/>'; }
}