Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Masowa zmiana rekordów
michaf1994
post
Post #1





Grupa: Zarejestrowani
Postów: 67
Pomógł: 2
Dołączył: 17.07.2014
Skąd: Wielkopolska

Ostrzeżenie: (0%)
-----


Witam
Potrzebuję napisać zapytanie, które masowo zmieni rekordy.
Tzn.:
Tabela:

id|cena|inne pola
-------------------
1|1001|coś tam
2|1111|coś tam
3|4041|coś tam
4|1561|coś tam
5|1067|coś tam
6|4565|coś tam
7|5575|coś tam
8|5643|coś tam
9|5545|coś tam
10|5643|coś tam


I teraz chcę za pomocą jednego zapytania ("chodzi o jedno wywołanie kodu mySQL w PHP) zrobić:

5|451|...
8|2351|...

czyli coś jakby:

UPDATE tabela SET cena=2351 WHERE id=8 AND cena=451 WHERE id=5

ale wiem, że nie zadziała mi mój kod. Możecie podpowiedzieć mi jak go przerobić?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
Forti
post
Post #2





Grupa: Zarejestrowani
Postów: 655
Pomógł: 73
Dołączył: 2.05.2014

Ostrzeżenie: (0%)
-----


Jeżeli chcesz zmienić rekordy które posiadają takie samo pole, np. 'coś tam' na 'coś tam 2' to proste zapytanie:

update tabela set `inne_pola`='coś tam 2' where `inne_pola`='coś tam'.


w innym wypadku powiedz co konkretnie chcesz zmienić. Jezeli chcesz ustawić różne wartości, róznym polom no to musisz mieć kilka zapytać. Może coś z pętlami i warunkami.

Daj więcej konkretów.


--------------------
Overwatch24 - najbardziej zaawansowany Polski portal Overwatch od fanów dla fanów.

Fachowo.co

Behance.net/fachowo
Go to the top of the page
+Quote Post
Crozin
post
Post #3





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

Ostrzeżenie: (0%)
-----


Dlaczego koniecznie chcesz to zrobić jednym zapytaniem? Da się, ale w bardzo niewygodny sposób. Lepiej zrobić to "normalnie", tj. przygotować zapytanie, rozpocząć transakcję, zaktualizować każdy rekord z osobna i zakończyć transakcję:
  1. $stmt = $pdo->prepare('UPDATE tabela SET cena = :cena WHERE id = :id');
  2.  
  3. $pdo->beginTransaction();
  4.  
  5. foreach ($dane as $id => $cena) {
  6. $stmt->execute([
  7. ':id' => $id,
  8. ':cena' => $cena
  9. ]);
  10. }
  11.  
  12. $pdo->commit();
Prosto, łatwo i względnie szybko.
Go to the top of the page
+Quote Post
Pyton_000
post
Post #4





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


Jeżeli masz ID to możesz zorbić mass input:

  1. INSERT INTO cos (id, cena) VALUES (1, 45), (2, 46) ON DUPLICATE KEY UPDATE cena = VALUES(cena)
Go to the top of the page
+Quote Post
michaf1994
post
Post #5





Grupa: Zarejestrowani
Postów: 67
Pomógł: 2
Dołączył: 17.07.2014
Skąd: Wielkopolska

Ostrzeżenie: (0%)
-----


Ok. A przy okazji mam jeszcze taki problem:
Mam tabele
stanymagazynowe
id,produkt,sztuk,magazyn

i wpis z kolejno wartościami:
2,256,5,4

teraz chcę żeby 2 sztuki zostały przesłane do magazynu 10 czyli chcę mieć:
2,256,3,4
3,256,2,10

a jeżeli w magazynie 10 jest już jakiś produkt z tym id 256 to żeby zwiększyło ilość jego sztuk o te 2 z magazynu 10

jak napisać takie zapytanie SQL? w php wiem, ale chcę przenieść wszystko na sql, bo muszę używać tylko sql na studiach
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 11:13