Как сопоставить записи таблицы USER и таблицы USERINFO один к одному?

У меня есть таблица UserLogin, в которой пользователи могут входить в систему с именем пользователя и паролем. У меня также есть таблица UserInfo, содержащая адрес, номера телефонов и информацию в 30 других столбцах.

Когда пользователь создается в таблице UserLogin, я хочу сопоставить его строку UserLogin со строкой в ​​таблице UserInfo, чтобы я мог хранить данные пользователя в таблице UserInfo. Моя цель состоит в том, чтобы эти таблицы имели идентификаторы первичного ключа, которые совпадают, чтобы UserLoginID = '2493' и UserInfoID = '2493'. Таким образом, таблицы будут соответствовать строка за строкой, одна за другой, при этом информация профиля пользователя всегда будет соответствовать его учетной записи UserLogin.

Как лучше всего (лучшие практики) добиться этого?

Таблица входа в систему
- идентификатор пользователя (первичный ключ) (Auto_Increment)
- имя пользователя
- пароль
- адрес электронной почты
- useraccess

Таблица информации о пользователе
- UserInfoID (первичный ключ) (Auto_Increment)
- Имя
- Фамилия
- Адрес
- Номер телефона

Когда создается новый UserID, я хочу, чтобы UserInfoID также создавался и был привязан к UserID, чтобы при входе в систему и вводе данных своего профиля он вводился в таблицу UserInfo.

Спасибо Vintage Coders! Вот что у меня получилось, и оно работает безупречно:

$stmt = $db->prepare('INSERT INTO UserLogin (username,password,email) 
VALUES (:username, :password, :email)');

$stmt->execute(array(
':username' => $username, 
':password' => $hashedpassword, 
':email' => $email  ));

$id = $db->lastInsertId('adminID');

include('includes/database.php');

$FirstName=$_POST['FirstName']; 
$LastName=$_POST['LastName'];

$mysqli->query("INSERT INTO UserInfo(UserInfoID, FirstName, LastName) 
VALUES ('$id', '$FirstName', '$LastName')");

person Jc Meyer    schedule 02.08.2019    source источник


Ответы (2)


Есть два решения:

1) Когда вы вставляете запись первой таблицы, вы можете получить последний вставленный идентификатор и сохранить вторую таблицу UserInfoID как полученную из первой таблицы.

2) Вы можете создать новое поле во второй таблице, то есть связанное с первой таблицей (идентификатор пользователя). и когда вы вставляете запись во вторую таблицу, вы можете вставить последний вставленный идентификатор первой таблицы во второй столбец таблицы, то есть (идентификатор пользователя). Формула:

mysql_insert_id();
person Vintage Coders    schedule 02.08.2019
comment
Спасибо! Это работает безупречно. Единственная разница в том, что я использовал mysqli. Помимо этого, он работает как шарм. знак равно - person Jc Meyer; 02.08.2019

Есть несколько простых способов решить эту проблему:

  • Объедините две таблицы в одну.
  • Добавьте поле userID в таблицу UserInfo. (Будьте осторожны, чтобы не создавать более одной записи UserInfo с одним и тем же значением userID, возможно, сделайте этот столбец уникальным в целях безопасности).

Я не вижу смысла в добавлении поля UserInfoID в таблицу пользователей. Когда у вас есть идентификатор пользователя, вы можете легко найти запись UserInfo.

person ChrisFNZ    schedule 02.08.2019