2

phpを使用してmysqlで5〜10個のテーブルを作成する必要がありますが、10個のクエリを作成するよりも良い方法があると思うので、私の質問は、単一のクエリでこれを行う方法ですか?それは可能ですか?すべてのテーブルは異なります。

$sql = "CREATE TABLE IF NOT EXISTS `db_countries` (
           `countrykey` int(11) NOT NULL,
           `countrynamelat` varchar(500) NOT NULL default '',
            PRIMARY KEY  (`countrykey`)
        ) ENGINE=MyISAM  DEFAULT CHARSET=utf8";

mysql_query($sql);

  $sql2 = "CREATE TABLE IF NOT EXISTS `db_city`(
              `city_key` int(11) NOT NULL,
              `city_name` varchar(500) NOT NULL,
              `city_code` int(11) NOT NULL,
              `city_country_key` int(11) NOT NULL,
            PRIMARY KEY(`city_key`)
          ) ENGINE=MyISAM DEFAULT CHARSET=utf8";
    mysql_query($sql2) or die(mysql_error());
4

1 に答える 1

2

すべてのテーブルを作成するストアドプロシージャを作成できます。

DELIMITER $$

CREATE PROCEDURE `localhost`.`sp_CreateTables` ()
BEGIN
  CREATE TABLE IF NOT EXISTS `db_countries` (
     `countrykey` int(11) NOT NULL,
     `countrynamelat` varchar(500) NOT NULL default '',
      PRIMARY KEY  (`countrykey`)
  ) ENGINE=MyISAM  DEFAULT CHARSET=utf8;

  CREATE TABLE IF NOT EXISTS `db_city`(
    `city_key` int(11) NOT NULL,
     `city_name` varchar(500) NOT NULL,
     `city_code` int(11) NOT NULL,
     `city_country_key` int(11) NOT NULL,
     PRIMARY KEY(`city_key`)
  ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
END

次に、PHPからストアドプロシージャを呼び出すだけです。

$sql = "call sp_CreateTables()";
mysql_query($sql) or die(mysql_error());
于 2012-05-30T06:45:31.973 に答える