是MySQL还是我的php?

是MySQL还是我的php?,php,mysql,sql,mysqli,Php,Mysql,Sql,Mysqli,我正在开发一个RESTAPI系统,它允许人们下载git项目,并为他们的移动应用程序或web服务轻松设置API。我有一个设置页面,在创建表时遇到问题 这里有一个指向我的github项目的链接,它几乎没有完成的地方,但你几乎每天都可以看到它的更新进度: 我有一个sql语句,当我将它粘贴到phpMyAdmin中时,它可以工作,但它在php中给了我一个错误。我使用了mysqli_error,我只知道我的语句有一个错误 下面是我的sql语句: CREATE TABLE `applications` (

我正在开发一个RESTAPI系统,它允许人们下载git项目,并为他们的移动应用程序或web服务轻松设置API。我有一个设置页面,在创建表时遇到问题

这里有一个指向我的github项目的链接,它几乎没有完成的地方,但你几乎每天都可以看到它的更新进度:

我有一个sql语句,当我将它粘贴到phpMyAdmin中时,它可以工作,但它在php中给了我一个错误。我使用了mysqli_error,我只知道我的语句有一个错误

下面是我的sql语句:

CREATE TABLE `applications` (
  `appID` int(11) NOT NULL AUTO_INCREMENT,
  `appName` varchar(10000) NOT NULL,
  `appDB` varchar(10000) NOT NULL,
  `appPrefix` varchar(10000) NOT NULL,
  PRIMARY KEY (`appID`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1;

CREATE TABLE `login` (
  `userID` int(11) NOT NULL AUTO_INCREMENT,
  `username` varchar(1000) NOT NULL,
  `emailAddress` varchar(1000) NOT NULL,
  `password` varchar(10000) NOT NULL,
  `hash` varchar(10000) NOT NULL,
  `verified` tinyint(1) NOT NULL,
  PRIMARY KEY (`userID`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1;

CREATE TABLE `saltTable` (
  `userID` int(11) NOT NULL AUTO_INCREMENT,
  `salt` varchar(10000) NOT NULL,
  PRIMARY KEY (`userID`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1
下面是我的php函数:

function createInitialTables(){

    $serverURL = $_SESSION['server'];
    $username = $_SESSION['username'];
    $password = $_SESSION['password'];
    $database = $_SESSION['database'];

    $con = mysqli_connect($serverURL, $username, $password, $database);

    $sql = 'CREATE TABLE `applications` (
  `appID` int(11) NOT NULL AUTO_INCREMENT,
  `appName` varchar(10000) NOT NULL,
  `appDB` varchar(10000) NOT NULL,
  `appPrefix` varchar(10000) NOT NULL,
  PRIMARY KEY (`appID`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1;

CREATE TABLE `login` (
  `userID` int(11) NOT NULL AUTO_INCREMENT,
  `username` varchar(1000) NOT NULL,
  `emailAddress` varchar(1000) NOT NULL,
  `password` varchar(10000) NOT NULL,
  `hash` varchar(10000) NOT NULL,
  `verified` tinyint(1) NOT NULL,
  PRIMARY KEY (`userID`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1;

CREATE TABLE `saltTable` (
  `userID` int(11) NOT NULL AUTO_INCREMENT,
  `salt` varchar(10000) NOT NULL,
  PRIMARY KEY (`userID`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1;
';

    $result = mysqli_query($con, $sql);
    $error = mysqli_error($con);

    print($error);

}
下面是mysqli_错误()

我相信这是我的php的一个问题,因为我的语句在phpMyAdmin中工作

编辑:


解决办法已经找到。如前所述,当我应该使用
mysqli\u multi\u query()
时,我尝试使用
mysqli\u multi\u query()执行3个sql查询
mysqli_query
仅设计用于执行单个查询,您要求它执行3。

上述命令是正确的。但是,将字符串传递到
mysqli\u multi\u query()
时,不需要最后一个命令的结尾分号。PHP查询命令会自动添加您通常会添加的分号。

正在创建应用程序表吗?看起来错误是在创建登录表时触发的否,如下面的Ben Emmett所述,我正在尝试使用mysql_query同时执行3个查询,因此我需要使用mysqli_multi_query(),我不能用我的另一个stackoverflow帐户提问,因为它比这个帐户信誉好得多,所以我必须等待一段时间才能接受您的回答。
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'CREATE TABLE `login` (
  `userID` int(11) NOT NULL AUTO_INCREMENT,
  `username` ' at line 9CREATE TABLE `applications` (
  `appID` int(11) NOT NULL AUTO_INCREMENT,
  `appName` varchar(10000) NOT NULL,
  `appDB` varchar(10000) NOT NULL,
  `appPrefix` varchar(10000) NOT NULL,
  PRIMARY KEY (`appID`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1;