• 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

0 głosów
66 wizyt
pytanie zadane 29 stycznia 2017 w PHP, Symfony, Zend przez Alterwar Mądrala (7,280 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 Maniak (74,980 p.)
Wszędzie bindujesz parametry z wyjątkiem "invoice.id", to jak to w końcu jest?
komentarz 29 stycznia 2017 przez Alterwar Mądrala (7,280 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 (29,010 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 Mądrala (7,280 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 (94,730 p.)
Ogarnij Doctrine :)
komentarz 29 stycznia 2017 przez Alterwar Mądrala (7,280 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,460 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 Mądrala (7,280 p.)
Dzięki :)

Podobne pytania

0 głosów
1 odpowiedź 70 wizyt
0 głosów
2 odpowiedzi 73 wizyt
pytanie zadane 10 maja 2018 w PHP, Symfony, Zend przez Browarnik123 Użytkownik (840 p.)
0 głosów
1 odpowiedź 81 wizyt
pytanie zadane 28 stycznia w SQL, bazy danych przez Drax Użytkownik (630 p.)
Porady nie od parady
Zadając pytanie postaraj się o poprawną pisownię i czytelne formatowanie tekstu.Kompozycja

64,934 zapytań

111,406 odpowiedzi

234,470 komentarzy

46,767 pasjonatów

Przeglądających: 108
Pasjonatów: 2 Gości: 106

Motyw:

Akcja Pajacyk

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

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...