我正在开发一个REST API系统,允许人们下载一个git项目并轻松地为他们的移动应用程序或web服务设置一个API。我有一个设置页面,我在创建表格时遇到问题。是MySQL还是我的php?
这里是我的github上的项目的链接,它是无处接近完成,但你可以看到它的更新进度几乎每天:https://github.com/evanstoddard/REST-Easy
我有工作的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_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指出,我试图执行3 sql查询mysqli_query()
当我应该使用mysqli_multi_query()
。
是否正在创建应用程序表?看起来像创建登录表时触发的错误 – anthony
不,像下面说的Ben Emmett,我想用mysql_query一次执行3个查询,所以我需要使用mysqli_multi_query() –