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

SQL, INSERT INTO 3-tabele.

HackNation - ogólnopolski hackathon
0 głosów
647 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 (291,270 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,730 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,730 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,730 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 619 wizyt
pytanie zadane 6 marca 2018 w SQL, bazy danych przez DinapeS Początkujący (350 p.)
0 głosów
1 odpowiedź 646 wizyt
pytanie zadane 28 maja 2016 w SQL, bazy danych przez Iras Obywatel (1,800 p.)
0 głosów
0 odpowiedzi 2,160 wizyt
pytanie zadane 25 lipca 2017 w SQL, bazy danych przez Szczur Nowicjusz (190 p.)

93,626 zapytań

142,549 odpowiedzi

323,034 komentarzy

63,129 pasjonatów

Advent of Code 2025

Top 15 użytkowników

  1. 1210p. - dia-Chann
  2. 1197p. - DziarnowskiJ
  3. 1177p. - Łukasz Piwowar
  4. 1172p. - CC PL
  5. 1161p. - Maurycy W
  6. 1141p. - Adrian Wieprzkowicz
  7. 1138p. - raydeal
  8. 1134p. - Tomasz Bielak
  9. 1116p. - rucin93
  10. 1101p. - robwarsz
  11. 1100p. - Mariusz Fornal
  12. 1024p. - ssynowiec
  13. 885p. - Dominik Łempicki (kapitan)
  14. 847p. - Grzegorz Aleksander Klementowski
  15. 838p. - Wojciech Malicki
Szczegóły i pełne wyniki

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

Kursy INF.02 i INF.03
...