2014-04-08 2 views
4

У меня есть база данных Пользователей и другая таблица для Учителей. Учителя имеют все свойства как пользователь, но также и адрес электронной почты. При вставке в БД, как я могу вставить информацию, чтобы идентификатор был одинаковым для обоих?INSERT INTO две разные таблицы, но имеют одинаковый идентификатор?

ID в настоящее время находится на автоматическом ограничении.

это то, что у меня есть на данный момент:

$sqlQuery="INSERT INTO user(firstName,lastName,DOB,title,password,classRoomID) 
    VALUES('$myFirstName','$myLastName','$myDOB','$myTitle','$newPassword','$myClassRoom')"; 
    $result=mysql_query($sqlQuery); 

$sqlQuery = "INSERT INTO teacher(email) VALUES ('$myEmail')"; 
$result=mysql_query($sqlQuery); 

спасибо!

+0

Использование функций mysqli, mysql_ * устарело. – Companjo

ответ

0

почему использовать отдельную таблицу для учителей. вместо этого, вы можете иметь поле электронной почты в таблице с пользователем и дополнительное поле с флагом (T (для учителя) и U (для пользователя). По умолчанию может быть U. Это были следующие Pros.

  1. Не будет увеличить таблицу размер как электронная почта будет VARCHAR
  2. Удалить дополнительные накладные расходы на содержание двух таблиц.
  3. же Id может быть использован

Если вы хотите иметь то, как отдельная таблица, то ответ вы выбрали хороший один, но убедитесь, последний идентификатор вставки вызывается при одном и том же вызове соединения.

+0

Я попытался нормализовать его, имея пользователей, а затем таблицы учителя и ученика. Но я постепенно начинаю видеть преимущества наличия только одной таблицы пользователей. – user3506938

1

Попробуйте это:

$sqlQuery="INSERT INTO user(firstName,lastName,DOB,title,password,classRoomID) 
    VALUES('$myFirstName','$myLastName','$myDOB','$myTitle','$newPassword','$myClassRoom')"; 
    $result=mysql_query($sqlQuery); 

    $id = mysql_insert_id(); 

$sqlQuery = "INSERT INTO teacher(id, email) VALUES (' $id ','$myEmail')"; 
$result=mysql_query($sqlQuery); 
+0

Этот способ, к сожалению, не работал для меня, но ниже сделал. – user3506938

+1

Я думаю, что оба равны, за исключением того, что он использует mysqli, и я использую функцию mysql ..... Проверьте и попробуйте обновленный ответ ..... –

1

После первой вставки, выборки последней вставленной ID:

$last_id = mysqli_insert_id(); // or mysql_insert_id() if you're using old code 

Или вы могли бы разверните второй запрос и используйте встроенную функцию mysql LAST_INSERT_ID():

$sqlQuery = "INSERT INTO teacher(id, email) VALUES ((SELECT LAST_INSERT_ID()), '$myEmail')"; 
0

Хотя вы можете использовать функцию LAST_INSERT_ID(), чтобы получить последний идентификатор вставки, лучшим в этом случае является создание ссылки на столбец идентификатора пользователя.

teacher 

id | user_id | email 

Так teacher.id может быть anyting, но user_id столбцом является реальной ссылкой user таблицы.

Если вы используете InnoDB таблицу, вы можете сделать базу данных последовательно используя Foreign keys

Смежные вопросы