表不存在错误

Boj*_*mov -3 php mysql sql create-table

$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";
Run Code Online (Sandbox Code Playgroud)

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

Nea*_*eal 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
Run Code Online (Sandbox Code Playgroud)

然后,您知道哪个用户可以使用一个查询轻松回答哪个问题.

  • @BojanSerafimov这怎么回答你的问题? (3认同)
  • @BojanSerafimov你吸毒吗? (2认同)
  • @BojanSerafimov的答案是 - 不要这样做,它是不正确的和反模式,你将来会遇到问题,这是一个更好的方法来做你想做的事情. (2认同)