我正在開發一個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() –