-1

私は 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()ます。

4

2 に答える 2