Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP][MySQL]Aktualizacja wielu rekordów naraz w MySQL
northwest
post
Post #1





Grupa: Zarejestrowani
Postów: 788
Pomógł: 1
Dołączył: 17.09.2004

Ostrzeżenie: (10%)
X----


Witam serdecznie,
mam 2 tabelki w MySQL:

  1. CREATE TABLE IF NOT EXISTS `cms_temer` (
  2. `bf_id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT,
  3. `nazwa` int(11) NOT NULL,
  4. `ilosc` int(11) NOT NULL,
  5. PRIMARY KEY (`nazwa`),
  6. UNIQUE KEY `id` (`bf_id`),
  7. UNIQUE KEY `nazwa` (`nazwa`)
  8. ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=1 ;
  9.  
  10.  
  11. CREATE TABLE IF NOT EXISTS `cms_produkty` (
  12. `bf_id` bigint(35) UNSIGNED NOT NULL AUTO_INCREMENT,
  13. `nazwa` varchar(455) COLLATE utf8_unicode_ci DEFAULT NULL,
  14. `obrazek` varchar(400) COLLATE utf8_unicode_ci DEFAULT NULL,
  15. `isbn` varchar(20) COLLATE utf8_unicode_ci DEFAULT NULL,
  16. `kategoria` int(11) DEFAULT NULL,
  17. `podkategoria` int(11) DEFAULT NULL,
  18. `podgrupa` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
  19. `ate` varchar(300) COLLATE utf8_unicode_ci DEFAULT NULL,
  20. `ilosc` int(11) DEFAULT '1',
  21. UNIQUE KEY `id` (`bf_id`),
  22. UNIQUE KEY `isbn` (`isbn`),
  23. KEY `nazwa` (`nazwa`(333)),
  24. KEY `podkategoria` (`podkategoria`),
  25. KEY `kategoria` (`kategoria`)
  26. ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=1 ;



W tabeli cms_produkty mam różnego rodzaju produkty (ok 200 tys). W tabeli cms_temer - mam codziennie aktualizowane stany.
Opis tabeli cms_temer:
nazwa = cms_produkty.ate
ilość = cms_produkty.ilosc
Muszę na podstawie tabeli cms_temer przeprowadzić aktualizację produktów w tabeli cms_produkty
Próbuję rozwiązać tą aktualizację za pomocą skryptu:

  1. $update1 = null;
  2. $update2 = null;
  3. $update3 = null;
  4. $iillee = 0;
  5. $update = null;
  6. $wynik = mysql_query(" SELECT * FROM cms_temer ;") or die('Query failed: ' . mysql_error());
  7. while($rek = mysql_fetch_array($wynik)) {
  8. if($iillee < 200) {
  9. $update .= " UPDATE cms_produkty2 SET ilosc = '$rek[ilosc]' WHERE ate = '$rek[nazwa]'; ";
  10. $update1 .= " WHEN $rek[nazwa] THEN '$rek[ilosc]' ";
  11. $update2 .= " $rek[nazwa], ";
  12. $update3 .=
  13. $iillee = $iillee + 1;
  14. }
  15. if($iillee == 200){
  16. $update2 = substr($update2, 0, -3);
  17. $qqqqqq = "UPDATE cms_produkty2 SET ilosc = CASE ate
  18. $update1
  19. ELSE ilosc END
  20. WHERE ate IN ($update2);
  21. ";
  22. mysql_query($qqqqqq);
  23. $update1 = null;
  24. $update2 = null;
  25. $update3 = null;
  26. $iillee = 0;
  27. }
  28. }



Problem w tym że nie wszystkie rekordy zawsze mi się aktualizują.... Część produktów ma zmieniony stan - a część nie... Ma ktoś może pomysł jak to naprawić?

Bardzo proszę o pomoc,
Northwest


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: 25.08.2025 - 22:29