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

SQL, INSERT INTO 3-tabele.

Aruba Cloud VPS - 50% taniej przez 3 miesiące!
0 głosów
453 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 (289,670 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 536 wizyt
pytanie zadane 6 marca 2018 w SQL, bazy danych przez DinapeS Początkujący (350 p.)
0 głosów
1 odpowiedź 522 wizyt
pytanie zadane 28 maja 2016 w SQL, bazy danych przez Iras Obywatel (1,800 p.)
0 głosów
0 odpowiedzi 1,769 wizyt
pytanie zadane 25 lipca 2017 w SQL, bazy danych przez Szczur Nowicjusz (190 p.)

93,164 zapytań

142,176 odpowiedzi

321,929 komentarzy

62,491 pasjonatów

Advent of Code 2024

Top 15 użytkowników

  1. 682p. - dia-Chann
  2. 670p. - CC PL
  3. 669p. - Łukasz Piwowar
  4. 656p. - Łukasz Eckert
  5. 643p. - Michal Drewniak
  6. 567p. - ssynowiec
  7. 526p. - rucin93
  8. 453p. - Marcin Putra
  9. 428p. - rafalszastok
  10. 423p. - Adrian Wieprzkowicz
  11. 422p. - zmmz89
  12. 415p. - Mikbac
  13. 410p. - Piotr Aleksandrowicz
  14. 408p. - ksalekk
  15. 402p. - Mariusz Fornal
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

Wprowadzenie do ITsec, tom 1 Wprowadzenie do ITsec, tom 2

Można już zamawiać dwa tomy książek o ITsec pt. "Wprowadzenie do bezpieczeństwa IT" - mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy aż 15% zniżki! Dziękujemy ekipie Sekuraka za fajny rabat dla naszej Społeczności!

...