-1

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

这是我的 github 项目的链接,它还远未完成,但您几乎每天都可以看到它的更新进度:https ://github.com/evanstoddard/REST-Easy

我有一个 sql 语句,当我将它粘贴到 phpMyAdmin 时它可以工作,但它在 php.ini 中给了我一个错误。我使用了 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_error():

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;

我相信这是我的 php 的问题,因为我的语句在 phpMyAdmin 中有效。

编辑:

已找到解决方案。正如 Ben Emmett指出的那样,我正在尝试mysqli_query()在应该使用mysqli_multi_query().

4

2 回答 2

4

使用mysqli_multi_query(). mysqli_query仅设计用于执行单个查询,而您要求它执行 3.

于 2013-08-04T00:00:59.540 回答
0

上面的命令是正确的。但是,当您将字符串传递给mysqli_multi_query(). PHP 查询命令会自动添加您通常会添加的分号。

于 2013-08-04T00:06:44.887 回答