为什么一个PHP代码工作而另一个不工作?

时间:2017-12-21 04:18:13

标签: php mysql sql

以下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)
);

当我运行第一个文件时,它正确地创建了数据库,但它不会创建我希望它在数据库中创建的表。关于为什么会发生这种情况的任何想法?

2 个答案:

答案 0 :(得分:1)

当您传递' data.sql'的内容时,您将多个查询传递给mysqli_query,我不相信(我相信)。请尝试使用mysqli_multi_query

答案 1 :(得分:0)

创建数据库后,您需要选择数据库。你错过了这一步。

mysqli_select_db($con,"test");