2017-12-21 17 views
-1

次のPHPコードはデータベースを作成しますが、テーブルは作成しません。なぜ他のPHPコードは動作しないのですか?

define('DB_SERVER', 'localhost'); 
define('DB_USERNAME', 'root'); 
define('DB_PASSWORD', 'password'); 
$db = mysqli_connect(DB_SERVER, DB_USERNAME, DB_PASSWORD); 
    $sql = "CREATE DATABASE Stackoverflow;"; 
    $res = mysqli_query($db, $sql); 
    mysqli_close($db); 
define('DB_DATABASE', 'Stackoverflow'); 
$db = mysqli_connect(DB_SERVER, DB_USERNAME, DB_PASSWORD, DB_DATABASE); 
    $sql = file_get_contents("data.sql"); 
    $res = mysqli_query($db, $sql); 

このphpファイルはテーブルを作成します。

$db = 'Stackoverflow'; 
$host = 'localhost'; 
$user = 'root'; 
$pass = 'password'; 
    $connection = new PDO(
    "mysql:host=".$host.";dbname=".$db, $user, $pass, 
    [PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, 
    PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC] 
); 
    $sql = file_get_contents("data.sql"); 
    $connection->exec($sql); 

これらは私のdata.sqlにファイルの内容は以下のとおりです。

CREATE TABLE Booking_tbl (
    BookingId int NOT NULL AUTO_INCREMENT, 
    ClassId int NOT NULL, 
    UserName varchar(140), 
    PRIMARY KEY(BookingId) 
); 

CREATE TABLE Class_tbl (
       ClassId int NOT NULL AUTO_INCREMENT, 
    TeacherId int NOT NULL, 
    ClassName varchar(140) NOT NULL, 
    TimeSlot int NOT NULL, 
    SemesterId int NOT NULL, 
    PRIMARY KEY(ClassId) 
); 

CREATE TABLE Teacher_tbl (
    TeacherId int NOT NULL AUTO_INCREMENT, 
    TeacherName varchar(140) NOT NULL, 
    PRIMARY KEY(TeacherId) 
); 

CREATE TABLE Semester_tbl (
    SemesterId int NOT NULL AUTO_INCREMENT, 
    SemesterName varchar(50), 
    PRIMARY KEY (SemesterId) 
); 

私は最初のファイルを実行すると、それが正しくデータベースが作成されますが、それは私がそれを作成するテーブルを作成しませんデータベースに格納されます。なぜこれが起こっているのかについてのアイデアはありますか?

+0

データベースへの接続が正しく行われたことを確認しましたか? SQLファイルの手動インポートは機能しますか? –

+0

テーブルを作成するデータベースを選択しましたか? my_new_dbを使用します。 –

+0

@MdMonjurUlHasanデータベースへの接続はわかりませんが、サーバーへの接続は正しく行われています。 – Rixwaan

答えて

1

'data.sql'の内容を渡すと、複数のクエリがmysqli_queryに渡されていますが、これは許可されていません。代わりにmysqli_multi_queryを使用してみてください。

+0

それは動作していないようです。 – Rixwaan

+0

以下は、私がしようとするエラーです。 – Rixwaan

+0

mysqli_multi_query()は、パラメータ1がmysqliであると想定しています。ブール値が与えられています – Rixwaan

0

データベースを作成したら、データベースを選択する必要があります。あなたはこのステップを逃しています。

mysqli_select_db($con,"test"); 
+0

私は$ db = mysqli_select_db($ con、test)しますか? mysqli_query($ db、$ sql);を実行します。 – Rixwaan

関連する問題