-4
$sql = "CREATE TABLE IF NOT EXISTS questions_$username(".
        "question_id INT NOT NULL AUTO_INCREMENT, ".
        "question MEDIUMTEXT, ".
        "answer CHAR(1), ".
        "PRIMARY KEY (question_id))";
$retval = mysql_query($sql, $conn) or die(mysql_error());

$sql = "CREATE TABLE IF NOT EXISTS tests_$username(".
        "test_id INT NOT NULL AUTO_INCREMENT, ".
        "name VARCHAR(30) NOT NULL, ".
        "duration INT NOT NULL, ".
        "PRIMARY KEY (test_id))";
$retval = mysql_query($sql, $conn) or die(mysql_error());

$sql = "CREATE TABLE IF NOT EXISTS questions_tests_$username(".
        "test_id INT NOT NULL, ".
        "question_id INT NOT NULL, ".
        "FOREIGN KEY (test_id) REFERENCES tests_$username(test_id), ".
        "FOREIGN KEY (question_id) REFERENCES questions_$username(question_id), ".
        "PRIMARY KEY (test_id, question_id))".
$retval = mysql_query($sql, $conn) or die(mysql_error());

echo "debug";

前 2 个表创建成功,但第三个没有。它甚至没有给出任何错误。最后一行被执行。我的数据库中的表数量没有限制。

4

1 回答 1

6

我认为你需要重新考虑你的一般模式。

应该为每个用户创建一个新表!

你应该有像测试、问题、test_questions、答案和用户这样的表。

像这样的东西:

tests:
   id, name, duration
questions:
   id, question
test_questions:
   id, test_id, question_id
users:
   id, name
answers:
   id, test_questions_id, user_id, answer

然后你知道哪个测试,哪个用户通过一个查询轻松回答了哪个问题。

于 2013-08-13T13:35:45.323 回答