Я работаю над системой REST API, позволяющей людям загружать проект git и легко настраивать 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.
EDIT:
Решение было найдено. Как указал Ben Emmett, я пытаюсь выполнить 3 sql-запроса с mysqli_query()
, когда я должен использовать mysqli_multi_query()
.
Создана ли таблица приложений? Похоже, что ошибка возникает при создании таблицы входа в систему – anthony
Нет, как указано ниже, Ben Emmett, я пытаюсь выполнить сразу три запроса с помощью mysql_query, поэтому мне нужно использовать mysqli_multi_query() –