0

私は多くのことを試しましたが、なぜこれが機能しないのか理解できません... 基本的に、私はテーブルを削除して作成しています。次のクエリは、SQL PRO または mysqladmin で完全に機能します。

SET foreign_key_checks = 0;

DROP TABLE IF EXISTS `calendarCountries`;

CREATE TABLE `calendarCountries` (
  `id` int(5) NOT NULL AUTO_INCREMENT,
  `country` varchar(50) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=latin1;

insert into calendarCountries (id,country) values (1,'US');

DROP TABLE IF EXISTS `calendarWorldHolidays`;

CREATE TABLE `calendarWorldHolidays` (
  `holidayName` varchar(150) NOT NULL,
  `holidayDate` date NOT NULL,
  `countryCode` int(5) DEFAULT NULL,
  KEY `countryCode` (`countryCode`),
  CONSTRAINT `calendarWorldHolidays_ibfk_1` FOREIGN KEY (`countryCode`) REFERENCES `calendarCountries` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

SET foreign_key_checks = 1;

しかし、php で実行しようとすると、機能せず、構文エラーが発生します。

SQLステートメントを過去のようにphpにコピーするだけです

$createTablesQuery = "  <I copy the statements above here>   "
mysqli_query($link, $createTablesQuery)

私が得るエラーは次のとおりです。

無効なクエリ: SQL 構文にエラーがあります。Near 'DROP TABLE IF EXISTS calendarCountries;を使用する正しい構文については、MySQL サーバーのバージョンに対応するマニュアルを確認してください。CREATE TABLE calendarCountries( ' 3 行目

私を助けてください、私は何が間違っていますか?

4

1 に答える 1

0

mysqli_query関数では、1 つのクエリのみを使用できます。いくつかのクエリを実行する必要がある場合は、mysqli_queryクエリごとに 1 つ使用するか、mysqli_multi_query関数を使用する必要があります。例えば:

$query1 = "CREATE TABLE `calendarCountries` ( `id` int(5) NOT NULL AUTO_INCREMENT, `country` varchar(50) NOT NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=latin1;";
$query2 = "insert into calendarCountries (id,country) values (1,'US');";

//Variant 1
mysqli_query($link, $query1);
mysqli_query($link, $query2);

//Variant2
mysqli_multi_query($link, $query1.$query2);
于 2013-10-13T19:47:03.160 に答える