Php 用于创建多个表的MySQL语法

Php 用于创建多个表的MySQL语法,php,mysql,sql,database,Php,Mysql,Sql,Database,我遇到了一个我不理解的问题,试图从一个php文件创建表,所以我创建了一个变量,并在其中添加了所有的create语句,这样我就可以对其运行mysql_查询,我不断得到一个错误,即存在语法问题,因此,我在phpmyadmin的sql部分中回显变量的内容,并将其传递给word fine,但如果我在php中尝试,则会出现以下错误: 创建表时出错: 您的SQL语法有错误;检查手册 对应于您的MySQL服务器版本,以便使用正确的语法 “如果不存在,则在附近创建表材料(Idint(11)不为空 第9行的“自动

我遇到了一个我不理解的问题,试图从一个php文件创建表,所以我创建了一个变量,并在其中添加了所有的create语句,这样我就可以对其运行mysql_查询,我不断得到一个错误,即存在语法问题,因此,我在phpmyadmin的sql部分中回显变量的内容,并将其传递给word fine,但如果我在php中尝试,则会出现以下错误:

创建表时出错:

您的SQL语法有错误;检查手册 对应于您的MySQL服务器版本,以便使用正确的语法 “如果不存在,则在附近创建表
材料
Id
int(11)不为空 第9行的“自动增量”

以下是我在其上运行查询的变量中的字符串:

   // Create Tables Variable
$Tables = "";

// Create Students Table
$Tables = $Tables . "CREATE TABLE IF NOT EXISTS `Students` (
  `Id` int(11) NOT NULL AUTO_INCREMENT,
  `FirstName` varchar(50) DEFAULT NULL,
  `LastName` varchar(50) DEFAULT NULL,
  `Age` int(3) DEFAULT NULL,
  `Major` varchar(50) DEFAULT NULL,
  `Image` varchar(100) DEFAULT NULL,
  PRIMARY KEY (`Id`)
);";

// Create Materials Table
$Tables = $Tables . "CREATE TABLE IF NOT EXISTS `Materials` (
  `Id` int(11) NOT NULL AUTO_INCREMENT,
  `Name` varchar(50) DEFAULT NULL,
  `LastName` varchar(50) DEFAULT NULL,
  PRIMARY KEY (`Id`)
);";

// Create Materials Students intersectons table for many to many relation
$Tables = $Tables . "CREATE TABLE `Material_Student`(
    `Student_Id` INT NOT NULL,  
    `Material_id` INT NOT NULL,    
    FOREIGN KEY (`Student_Id`) REFERENCES Students(`id`) ON UPDATE CASCADE,  
    FOREIGN KEY (`Material_id`) REFERENCES Materials(`id`) ON UPDATE CASCADE
);";

// Create Pages Table
$Tables = $Tables . "CREATE TABLE `Pages`(
    `Id` INT NOT NULL AUTO_INCREMENT,
    PRIMARY KEY(`Id`),
    `Name` varchar(50),
    `Conent` varchar(5000)

);";

// Create News Table
$Tables = $Tables . "CREATE TABLE `News`(
    `Id` INT NOT NULL AUTO_INCREMENT,
    PRIMARY KEY(`Id`),
    `Title` varchar(50),
    `Conent` varchar(5000),
    `Image` varchar(100)
);";

// Create Notifications Table
$Tables = $Tables . "CREATE TABLE `Notifications`(
    `Id` INT NOT NULL AUTO_INCREMENT,
    PRIMARY KEY(`Id`),
    `Title` varchar(50),
    `Conent` varchar(5000),
    `Student_Id` INT NOT NULL,  
    FOREIGN KEY (`Student_Id`) REFERENCES Students(`id`) ON UPDATE CASCADE
);";

所以我在这里遗漏了什么呢?

通常情况下,您无法执行许多查询,我建议您像执行不同的查询一样执行所有查询,但是
MySQLi
有一个选项可以同时执行许多查询,您可以找到文档和示例。

按照通常的方式,您无法执行许多查询,我建议您执行所有查询它们中的l个喜欢不同的查询,但是
MySQLi
有一个选项,可以同时执行许多查询、文档和示例。

您的问题似乎是将多个查询传递到Php的单个查询函数中

有关说明,请参阅此链接。

我建议你要么分解你的语句,一次执行一个,要么 改用多重查询功能


HTH

您的问题似乎是将多个查询传递到Php的单查询函数中

有关说明,请参阅此链接。

我建议你要么分解你的语句,一次执行一个,要么 改用多重查询功能


HTH

这些是反勾号?还是普通引号?vs`每个查询都必须单独执行。您使用什么函数执行查询?您应该升级到一个未弃用的mysql API,例如,它方便地提供了一个名为的方法,允许您执行多个以分号分隔的查询。不知何故相关::这些反勾号是icks?或普通引号?/vs`每个查询必须单独执行。您使用什么函数执行查询?您应该升级到一个未弃用的mysql API,例如,它方便地提供了一个名为的方法,允许您执行以分号分隔的多个查询。莫名其妙地相关::所以问题是试图执行mult我使用mysql_query()一次查询,所以我需要分别执行每个查询,或者使用mysqli::multi_query(string$query),我对解决方案理解得好吗?@user Yes,
mysqli::multi_query(string$query)
让我们一次执行多个查询。但是你必须使用
MySQLi
方法,而不是
MySQL
。但是它们非常相似,所以你不应该发现困难。在我给出的链接页面上有一个很好的例子。所以问题是试图使用MySQL\u query()一次执行多个查询,所以我需要分别执行每项操作,或者使用mysqli::multi_query(string$query),我对解决方案理解得好吗?@user Yes,
mysqli::multi_query(string$query)
让我们一次执行多个查询。但是你必须使用
MySQLi
方法,而不是
MySQL
。但是它们非常相似,所以你不应该发现困难。在我给出的链接页面上有一个很好的例子。
$mysqli = new mysqli("localhost", "yourusername", "yourpassword", "test");
if ($mysqli->connect_errno) {
    echo "Failed to connect to MySQL: (" . $mysqli->connect_errno . ") " . $mysqli->connect_error;
}

if (!$mysqli->multi_query($Tables)) {
    echo "Multi query failed: (" . $mysqli->errno . ") " . $mysqli->error;
}

...