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
Crozin
post
Post #2





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

Posty w temacie


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

 



RSS Aktualny czas: 28.12.2025 - 11:16