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

Update powiązanych tabel SQL PHP

VPS Starter Arubacloud
0 głosów
320 wizyt
pytanie zadane 29 stycznia 2017 w PHP przez Alterwar Dyskutant (7,650 p.)

Witam,

pisze z zapewne prostym problemem, jednak siedzę już nad tym dłuższy czas i nie potrafię zrozumieć jak to ma działać.

Otóż posiadam takie zapytanie

try
    {

      $sqlEditInvoice = $pdo->prepare("UPDATE invoice, orders, company SET 
        invoice.nrFak = :a1,
        invoice.data1 = :a2,
        invoice.data2 = :a3,
        orders.zlecenieZDnia = :a4,
        orders.terminPlatnosci = :a5,
        orders.krajZaladunek = :a6,
        orders.krajRozladunek = :a7,
        orders.miejscowoscZaladunek = :a8,
        orders.miejscowoscRozladunek = :a9,
        orders.nrZlecenia = :a10,
        invoice.linkNbp = :a11,
        company.nazwaFirma = :a12,
        company.ulFirma = :a13,
        company.kodPoczFirma = :a14,
        company.miejscowoscFirma = :a15,
        company.krajFirma = :a16,
        company.nipFirma = :a17,
        invoice.formaPlatnosci = :a18,
        invoice.dzienPlatnosciFv = :a19
        WHERE invoice.id = ".$_POST['id_edit_fv'].";

        ");

robiąc update, wszystkie rekordy jakie mam w bazie są aktualizowane a nie ten wybrany 1. Rozumiem, że chodzi o to, że w WHERE podaje tylko invoice.id przypisane do id z przycisku, jednak nie wiem jak dodać jeszcze companny.id i orders.id tak, żeby aktualizowało jeden wybrany rekord. W tabeli invoice mam dodatkowe dwa pola: id_orders, id_company.

Edytując pola z invoice, dane się zapisują, edytując dane z company/orders wszystkie rekordy w bazie się aktualizują np. 30 nazw firm zmienia nazwę itd.

Czy ma ktoś jakiś pomysł?

komentarz 29 stycznia 2017 przez efiku Szeryf (75,160 p.)
Wszędzie bindujesz parametry z wyjątkiem "invoice.id", to jak to w końcu jest?
komentarz 29 stycznia 2017 przez Alterwar Dyskutant (7,650 p.)
ok rozumiem, nie byłem pewny czy to też mam bindować

3 odpowiedzi

0 głosów
odpowiedź 29 stycznia 2017 przez Assasz Nałogowiec (30,460 p.)
wybrane 29 stycznia 2017 przez Alterwar
 
Najlepsza

Według tego zapytania zostają aktualizowane wszystkie rekordy z tabel orders i company, a z invoice tylko o wskazanym id. Jeśli te tabele są powiązane, to powinieneś także je powiązać w tym zapytaniu, czyli 

WHERE invoice.id_orders=orders.id_orders AND invoice.id_company=company.id_company

 

komentarz 29 stycznia 2017 przez Alterwar Dyskutant (7,650 p.)
Trafiłeś dokładnie w to czego potrzebowałem, próbowałem w ten sposób ale źle łączyłem dane :) dzięki :)
+1 głos
odpowiedź 29 stycznia 2017 przez event15 Szeryf (93,790 p.)
Ogarnij Doctrine :)
komentarz 29 stycznia 2017 przez Alterwar Dyskutant (7,650 p.)
Mógłbyś w skrócie zarzucić coś o tym doctrine?:) to jest framework?
0 głosów
odpowiedź 29 stycznia 2017 przez CzikaCarry Szeryf (75,340 p.)
"Rozumiem, że chodzi o to, że w WHERE podaje tylko invoice.id przypisane do id z przycisku, jednak nie wiem jak dodać jeszcze companny.id i orders.id tak, żeby aktualizowało jeden wybrany rekord" hmmm... Możesz użyć AND. "WHERE invoice.id = ".$_POST['id_edit_fv'] AND company.id = something AND orders.id = something.
komentarz 29 stycznia 2017 przez Alterwar Dyskutant (7,650 p.)
Dzięki :)

Podobne pytania

0 głosów
1 odpowiedź 155 wizyt
pytanie zadane 31 stycznia 2020 w SQL, bazy danych przez bwl Obywatel (1,530 p.)
0 głosów
2 odpowiedzi 348 wizyt
pytanie zadane 14 maja 2020 w PHP przez spicedagger Użytkownik (530 p.)
0 głosów
1 odpowiedź 1,322 wizyt

92,453 zapytań

141,262 odpowiedzi

319,086 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!

...