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