2

理解できない問題があり、phpファイルからテーブルを作成しようとしているので、変数を作成し、その中にすべての作成ステートメントを追加して、mysql_queryを実行できるようにしましたが、エラーが発生し続けます構文の問題があるので、変数の内容をエコーし​​てphpmyadminのsqlセクションに貼り付けます。問題はありませんが、phpから試してみると、次のようなエラーが表示されます。

テーブル作成エラー:

SQL 構文にエラーがあります。Materials9 行目の 'CREATE TABLE IF NOT EXISTS ( Idint(11) NOT NULL AUTO_INCREMENT,'付近で使用する正しい構文については、MySQL サーバーのバージョンに対応するマニュアルを確認してください。

クエリを実行する変数の文字列は次のとおりです。

   // Create Tables Variable
$Tables = "";

// Create Students Table
$Tables = $Tables . "CREATE TABLE IF NOT EXISTS `Students` (
  `Id` int(11) NOT NULL AUTO_INCREMENT,
  `FirstName` varchar(50) DEFAULT NULL,
  `LastName` varchar(50) DEFAULT NULL,
  `Age` int(3) DEFAULT NULL,
  `Major` varchar(50) DEFAULT NULL,
  `Image` varchar(100) DEFAULT NULL,
  PRIMARY KEY (`Id`)
);";

// Create Materials Table
$Tables = $Tables . "CREATE TABLE IF NOT EXISTS `Materials` (
  `Id` int(11) NOT NULL AUTO_INCREMENT,
  `Name` varchar(50) DEFAULT NULL,
  `LastName` varchar(50) DEFAULT NULL,
  PRIMARY KEY (`Id`)
);";

// Create Materials Students intersectons table for many to many relation
$Tables = $Tables . "CREATE TABLE `Material_Student`(
    `Student_Id` INT NOT NULL,  
    `Material_id` INT NOT NULL,    
    FOREIGN KEY (`Student_Id`) REFERENCES Students(`id`) ON UPDATE CASCADE,  
    FOREIGN KEY (`Material_id`) REFERENCES Materials(`id`) ON UPDATE CASCADE
);";

// Create Pages Table
$Tables = $Tables . "CREATE TABLE `Pages`(
    `Id` INT NOT NULL AUTO_INCREMENT,
    PRIMARY KEY(`Id`),
    `Name` varchar(50),
    `Conent` varchar(5000)

);";

// Create News Table
$Tables = $Tables . "CREATE TABLE `News`(
    `Id` INT NOT NULL AUTO_INCREMENT,
    PRIMARY KEY(`Id`),
    `Title` varchar(50),
    `Conent` varchar(5000),
    `Image` varchar(100)
);";

// Create Notifications Table
$Tables = $Tables . "CREATE TABLE `Notifications`(
    `Id` INT NOT NULL AUTO_INCREMENT,
    PRIMARY KEY(`Id`),
    `Title` varchar(50),
    `Conent` varchar(5000),
    `Student_Id` INT NOT NULL,  
    FOREIGN KEY (`Student_Id`) REFERENCES Students(`id`) ON UPDATE CASCADE
);";

だから私はここで何が欠けていますか??

4

2 に答える 2

2

通常、多くのクエリを実行することはできません。すべてのクエリを異なるクエリのように実行することをお勧めしますが、一度に多くのクエリを実行するオプションがあり、ここでMySQLi見つけることができるドキュメントと例があります。

于 2013-10-23T07:19:15.083 に答える
2

あなたの問題は、複数のクエリを Php の単一のクエリ関数に渡しているようです。

説明については、このリンクを参照してください。 http://php.net/manual/en/mysqli.quickstart.multiple-statement.php

ステートメントを分割して一度に 1 つずつ実行するか、代わりに multi_query 関数を使用することをお勧めします。

http://www.php.net/manual/en/mysqli.multi-query.php

$mysqli = new mysqli("localhost", "yourusername", "yourpassword", "test");
if ($mysqli->connect_errno) {
    echo "Failed to connect to MySQL: (" . $mysqli->connect_errno . ") " . $mysqli->connect_error;
}

if (!$mysqli->multi_query($Tables)) {
    echo "Multi query failed: (" . $mysqli->errno . ") " . $mysqli->error;
}

...

HTH

于 2013-10-23T07:35:21.517 に答える