私は REST API システムに取り組んでおり、人々が git プロジェクトをダウンロードして、モバイル アプリや Web サービス用の API を簡単にセットアップできるようにしています。セットアップ ページがありますが、テーブルの作成に問題があります。
これは私の github プロジェクトへのリンクです。完全にはほど遠いですが、ほぼ毎日の更新で進行状況を確認できます: https://github.com/evanstoddard/REST-Easy
phpMyAdmin に貼り付けると機能する sql ステートメントがありますが、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;
私のステートメントはphpMyAdminで機能するため、phpに問題があると思います。
編集:
解決策が見つかりました。Ben Emmettが指摘したように、使用すべきときに 3 つの SQL クエリを実行しようとして mysqli_query()
いmysqli_multi_query()
ます。