• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

SQL, INSERT INTO 3-tabele.

VPS Starter Arubacloud
0 głosów
292 wizyt
pytanie zadane 18 lipca 2017 w SQL, bazy danych przez chmod96 Obywatel (1,380 p.)

Cześć, tworzę w PHP formularz rejestracji. Informacje pobrane z formularza będą zapisane do 3 różnych tabel.

Tabela: users (email, password)

Tabela: users_data (user_id, first_name, last_name)

Tabela: resore_password (user_id, support_questions, answer)

mam do tego użyć w PDO transakcji i wszystko jest OK. Tylko przy podawaniu wartości do zapytań SQL skąd mam mieć user_id ?

$sql_users = "INSERT INTO users ('email', 'password') VALUES (:email, :password)";
$sql_users_data = "INSERT  INTO users_data ('user_id', 'first_name', 'last_name') VALUES (:user_id, :first_name, :last_name)";
$sql_restore_password = "INSERT  INTO restore_password ('user_id', 'support_questions', 'answer') VALUES (:user_id, :support_questions, :answer)";

 

komentarz 18 lipca 2017 przez Arkadiusz Waluk Ekspert (287,550 p.)
A po co rozdzielasz to na trzy osobne tabele?
komentarz 18 lipca 2017 przez chmod96 Obywatel (1,380 p.)
Tak poprostu mam zaprojektowaną bazę danych.

2 odpowiedzi

0 głosów
odpowiedź 18 lipca 2017 przez Chess Szeryf (76,710 p.)

Napisz NULL, jeśli w tabeli masz ustawione na auto_increment, to automatycznie doda ci numer ID wyższy od poprzedniego o jeden.

komentarz 18 lipca 2017 przez chmod96 Obywatel (1,380 p.)

Nie o to mi chodzi, w tabeli user_data mam kolumnę user_id która bezpośrednio się odnosi do numeru id użytkownika w tabeli users.

komentarz 18 lipca 2017 przez Chess Szeryf (76,710 p.)

Może skojarz nazwę e-mail'a z user_id. Czy możesz wytłumaczyć to jaśniej, co konkretnie zamierzasz napisać/zrobić?

komentarz 18 lipca 2017 przez chmod96 Obywatel (1,380 p.)

Mam zapisać do trzech tabel informację które są powiązane relacjami 1 do 1, jeden użytkownik może mieć tylko 1 dane osobowe w tabeli users_data w tabeli users trzymam numer id użytkowników. 

Teraz gdy chcę zapisać dane równoczeście w trzech tabelach to skąd ma wziąć numer id użytkownika nowo dodanego żeby w 2 tabeli w kolumnie user_id móc go powiązać z użytkownikeim zz tabeli users

komentarz 18 lipca 2017 przez Chess Szeryf (76,710 p.)
Napisz zmienną w bazie i to powinno wystarczyć moim zdaniem.

https://dev.mysql.com/doc/refman/5.7/en/user-variables.html
0 głosów
odpowiedź 19 lipca 2017 przez chmod96 Obywatel (1,380 p.)

Zrobiłem to tak i działa laugh

        $conn->beginTransaction();

        // Users table
        $tableUsers = $conn->prepare("INSERT INTO users (email, password) VALUES (:email, :password)");
        $tableUsers->bindValue(':email', $_POST['email']);
        $tableUsers->bindValue(':password', $_POST['password']);
        $tableUsers->execute();

        $userID = $conn->lastInsertId();

        // Users Data table
        $tableUsersData = $conn->prepare("INSERT  INTO users_data (user_id, first_name, last_name) VALUES (:user_id, :first_name, :last_name)");
        $tableUsersData->bindValue(':user_id', $userID, PDO::PARAM_INT);
        $tableUsersData->bindValue(':first_name', $_POST['first_name']);
        $tableUsersData->bindValue(':last_name', $_POST['last_name']);
        $tableUsersData->execute();

        // Restore Password table
        $tableRestorePassword = $conn->prepare("INSERT  INTO restore_password (user_id, support_questions, answer) VALUES (:user_id, :support_questions, :answer)");
        $tableRestorePassword->bindValue(':user_id', $userID, PDO::PARAM_INT);
        $tableRestorePassword->bindValue(':support_questions', $_POST['support_questions']);
        $tableRestorePassword->bindValue(':answer', $_POST['answer']);
        $tableRestorePassword->execute(); 
        
        $conn->commit();

Jeżeli ktoś ma inny pomysł, Pisać!

Podobne pytania

0 głosów
0 odpowiedzi 317 wizyt
pytanie zadane 6 marca 2018 w SQL, bazy danych przez DinapeS Początkujący (350 p.)
0 głosów
1 odpowiedź 378 wizyt
pytanie zadane 28 maja 2016 w SQL, bazy danych przez Iras Obywatel (1,800 p.)
0 głosów
0 odpowiedzi 1,072 wizyt
pytanie zadane 25 lipca 2017 w SQL, bazy danych przez Szczur Nowicjusz (190 p.)

92,453 zapytań

141,262 odpowiedzi

319,088 komentarzy

61,854 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...