php数据库表创建失败

Sta*_*erd -1 php mysqli

我使用以下要点来尝试创建数据库连接的OOP:

https://gist.github.com/jonashansen229/4534794

它似乎工作到目前为止.

但是创建数据库表pass_exams失败了.

编辑:

在最近的评论和建议后,我更新了我的代码:

require_once 'Database.php'; // the gist 4534794

class DatabaseSchema {

  public function createStudents() {
    $db = Database::getInstance();
    $mysqli = $db->getConnection();
    $create_students = 'CREATE TABLE IF NOT EXISTS students (
      id INT(6) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
      firstname VARCHAR(40) NOT NULL,
      lastname VARCHAR(40) NOT NULL,
      university VARCHAR(50)
    )';
    $result = $mysqli->query($create_students);
  }

  public function createPassedExams() {
    $db = Database::getInstance();
    $mysqli = $db->getConnection();
    $create_passed_exams = 'CREATE TABLE IF NOT EXISTS passed_exams (
      id INT(6) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
      name VARCHAR(40) NOT NULL,
      student_id INT(6),
      FOREIGN KEY (student_id) REFERENCES students(id) ON DELETE CASCADE
    )';
    $result = $mysqli->query($create_passed_exams);
  }

}

$db_student = new DatabaseSchema();

$db_student->createStudents();
$db_student->createPassedExams();
Run Code Online (Sandbox Code Playgroud)

当我查看mysql控制台时,只创建了表学生.为什么表pass_exams缺失?

Ita*_*vka 5

您创建要检查的字符串,$query_students = 'SELECT ID FROM STUDENTS'; 但您从未实际运行此字符串.然后你检查字符串是否为空,它在代码中永远不会为空.你应该做的是使用mysql的CREATE ... IF NOT EXISTS语法,而不是你在这里做的.

第一个示例显示语法https://dev.mysql.com/doc/refman/5.5/en/create-table.html