$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 таблицы создаются успешно, а третий нет. Он даже не дает никаких ошибок. Последняя строка выполняется. В моей базе данных нет ограничений на количество таблиц.Таблица не существует Ошибка
[** Пожалуйста, пожалуйста, _please_, не используйте 'mysql_ *' функции в новом коде **) (http://bit.ly/phpmsql). Они больше не поддерживаются [и официально устарели] (http://j.mp/XqV7Lp). См. [** красное поле **] (http://j.mp/Te9zIL)? Узнайте о [* подготовленных операторах *] (http://j.mp/T9hLWi) и используйте [PDO] (http://php.net/pdo) или [MySQLi] (http://php.net/ mysqli) - [эта статья] (http://j.mp/QEx8IB) поможет вам решить, какой из них. Если вы выберете PDO, [здесь хороший учебник] (http://j.mp/PoWehJ). – Neal
Также, пожалуйста, пожалуйста, не создавайте новые таблицы для каждого пользователя в вашей системе. Это антипаттерн, который убьет ваше приложение, ваш сервер, вас самих, вашу семью и всех, чье имя начинается с «S». – Mchl
. Не могли бы вы попытаться добавить echo $ sql после каждого утверждения, чтобы увидеть, какая строка была создана? Затем разместите их здесь. – Nikhil