Обновление реляционной базы данных в PHP/MySQL

Сам учусь веб-программированию. Я пытаюсь создать учетную запись пользователя для веб-сайта. У меня есть две базы данных: первая (db_users — идентификатор пользователя (автоматическое увеличение), имя пользователя, пароль) для хранения информации о пользователе, такой как имя пользователя, пароль и т. д., и вторая (db_address — идентификатор пользователя (автоматическое увеличение), адрес1, адрес2, город) для хранения адреса пользователя.

Теперь, когда я регистрирую пользователя, как мне убедиться, что обе таблицы обновлены с правильным идентификатором пользователя? Или это не то, как работает реляционная база данных?


person Tripping    schedule 02.04.2012    source источник
comment
Небольшое примечание: помните о безопасности, используйте хешированные и соленые пароли. сохранение паролей в виде простого текста — это большое нет-нет.   -  person GuZzie    schedule 02.04.2012


Ответы (4)


Не вдаваясь в код, который вы хотите сделать:

  1. Вставить данные в пользовательскую таблицу
  2. Получить идентификатор, вставленный с помощью $id = mysql_insert_id()
  3. Вставьте данные в таблицу адресов, используя $id

РЕДАКТИРОВАТЬ: если вы используете более одного соединения MySQL, вам нужно сделать $id = mysql_insert_id($connection)

person bendataclear    schedule 02.04.2012

Пользовательские данные не подходят для реляционной базы данных.
Нет смысла иметь 2 таблицы для пользователя (как и 2 поля для адреса).

Сделайте это одной таблицей, затем добавьте таблицу комментариев и добавьте в нее поле идентификатора пользователя.
Таким образом, у вас будет реальный случай реляционной базы данных.

person Your Common Sense    schedule 02.04.2012

Прежде всего, я думаю, у вас, вероятно, две таблицы, а не две базы данных. Во-вторых, в вашей таблице адресов должен быть столбец addressid, который вы должны автоматически увеличивать. Вы несете ответственность за установку правильного идентификатора пользователя в таблице адресов. Таким образом, вы можете иметь несколько адресов для одной учетной записи. Например, 1 для доставки и 1 для выставления счета.

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

person Bas    schedule 02.04.2012
comment
Извините, да, у меня есть две таблицы. Я предполагаю, что мой реальный вопрос заключается в том, что если в моей таблице адресов есть addressid и userid. И пользователь регистрируется на веб-сайте, как мне обновить таблицу адресов с правильным идентификатором пользователя? - person Tripping; 02.04.2012

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

db_users:

  • идентификатор пользователя (автоматическое увеличение)
  • имя пользователя
  • пароль

db_адрес:

  • address_id (автоинкремент)
  • Логин пользователя
  • адрес 1
  • Адрес 2
  • город
person afaf12    schedule 02.04.2012