• 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

Object Storage Arubacloud
0 głosów
332 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ź 157 wizyt
pytanie zadane 31 stycznia 2020 w SQL, bazy danych przez bwl Obywatel (1,530 p.)
0 głosów
2 odpowiedzi 364 wizyt
pytanie zadane 14 maja 2020 w PHP przez spicedagger Użytkownik (530 p.)
0 głosów
1 odpowiedź 1,359 wizyt

92,539 zapytań

141,382 odpowiedzi

319,479 komentarzy

61,928 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

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy 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!

...