以下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 :(得分:1)
当您传递' data.sql'的内容时,您将多个查询传递给mysqli_query
,我不相信(我相信)。请尝试使用mysqli_multi_query
。
答案 1 :(得分:0)
创建数据库后,您需要选择数据库。你错过了这一步。
mysqli_select_db($con,"test");