通过SQL pro工作的MySQL Query在mysqli_query中不起作用

时间:2013-10-13 19:34:35

标签: php mysql sql database

我尝试了很多东西,却无法理解为什么这不起作用...... 基本上,我正在放弃并创建表格。以下查询在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语法出错;检查与您的MySQL服务器版本对应的手册,以便在'DROP TABLE IF EXISTS calendarCountries附近使用正确的语法; CREATE TABLE calendarCountries('第3行

请帮助我,我做错了什么?

1 个答案:

答案 0 :(得分:0)

mysqli_query函数只允许使用一个查询。如果您需要运行一些查询,则需要对每个查询使用一个mysqli_query或使用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);