簡體   English   中英

php數據庫表創建失敗

[英]php database table creation fails

我使用以下要點嘗試進行OOP創建數據庫連接:

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

到目前為止,它似乎仍然有效。

但是創建數據庫表passed_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();

當我在mysql控制台中查看時,僅創建表格學生。 為什么表pass_exams丟失了?

您創建字符串以檢查$query_students = 'SELECT ID FROM STUDENTS'; 但您從未真正運行過此程序。 然后,您檢查字符串是否為空,該字符串在您的代碼中永遠不會為空。 您應該使用mysql的CREATE ... IF NOT EXISTS語法,而不是在此處進行的操作。

第一個示例顯示語法https://dev.mysql.com/doc/refman/5.5/en/create-table.html

students表上的id passed_exams INT(6) UNSIGNEDpassed_exams表上的student_id passed_exams符號 INT(6) 因此, FOREIGN KEY (student_id) REFERENCES students(id) ON DELETE CASCADE子句將失敗,並顯示“錯誤代碼:1215。無法添加外鍵約束”。

我建議您實施一些錯誤處理,以便您看到此錯誤消息,而不是盲目地繼續執行代碼。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM