Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP][MYSQL] Problem z ON DUPLICATE KEY UPDATE
-Jertvb-
post
Post #1





Goście







Mam problem z ON DUPLICATE KEY UPDATE. Gdy dodaję rekord i potem usuwam w kodzie z nim INSERT i dodaję nową wartość z ON DUPLICATE KEY UPDATE to nie nadpisuje kompletnie. To jest z wikibooks.org:

  1. <?php
  2.  
  3. mysql_connect ('127.0.0.1','root','krasnal');
  4.  
  5.  
  6. $base= "CREATE TABLE `slownik` (
  7. `id` MEDIUMINT NOT NULL AUTO_INCREMENT PRIMARY KEY,
  8. `haslo` VARCHAR(40) NOT NULL,
  9. `znaczenie` VARCHAR(255) NOT NULL,
  10. UNIQUE(
  11.  `haslo` 
  12. )
  13. ) TYPE = MYISAM;";
  14.  
  15.  
  16. $records= "INSERT INTO slownik (haslo, znaczenie) VALUES('house', 'dom (budynek), rodzaj obiektu mieszkalnego.')
  17. ON DUPLICATE KEY UPDATE znaczenie=VALUES(znaczenie);";
  18.  
  19. mysql_query($base);
  20. mysql_query($records);
  21. ?>
Go to the top of the page
+Quote Post
tomeksobczak
post
Post #2





Grupa: Zarejestrowani
Postów: 139
Pomógł: 10
Dołączył: 6.07.2007
Skąd: opole

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


spróbuj tak

  1. <?php
  2. $records= "INSERT INTO slownik (haslo, znaczenie) VALUES('house', 'dom (budynek), rodzaj obiektu mieszkalnego.')
  3. ON DUPLICATE KEY UPDATE znaczenie='dom (budynek), rodzaj obiektu mieszkalnego.';";
  4. ?>


no i nie twórz tabeli za każdym razem
  1. <?php
  2. mysql_query($base);
  3. ?>


Ten post edytował tomeksobczak 17.05.2008, 18:30:12
Go to the top of the page
+Quote Post
nevt
post
Post #3





Grupa: Przyjaciele php.pl
Postów: 1 595
Pomógł: 282
Dołączył: 24.09.2007
Skąd: Reda, Pomorskie.

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


kod który pokazałeś (przykładowy) jest prawidowy i działa zgodnie z oczekiwaniami. pokaż SWÓJ PRAWDZIWY kod i opisz dokładnie co ci w nim nie działa... bo stwierdzenia, że:
Cytat
Gdy dodaję rekord i potem usuwam w kodzie z nim INSERT i dodaję nową wartość z ON DUPLICATE KEY UPDATE to nie nadpisuje kompletnie.

nie rozumiem kompletnie... szczególnie wytłuszczonego fragmentu...
Go to the top of the page
+Quote Post
-Jertvb-
post
Post #4





Goście







Chodzi mi o to że jak są rekordy house a później dom (budynek) to żeby to zostało nadpisane, ale żeby nie było z innym id tylko z tym samym czyli zastosowanie ON DUPLICATE KEY UPDATE tu jest potrzebne no i żeby zostało nadpisane żeby było house a później dom (budynek), rodzaj obiektu mieszkalnego tylko w tym samym rekordzie a nie jak przy Replace że usuwa stary rekord i dodaje nowy ale o innym id. Cały kod:

  1. <?php 
  2.  
  3. mysql_connect ('127.0.0.1','root','krasnal');
  4.  
  5.  
  6. $base= "CREATE TABLE `slownik` (
  7. `id` MEDIUMINT NOT NULL AUTO_INCREMENT PRIMARY KEY,
  8. `haslo` VARCHAR(40) NOT NULL,
  9. `znaczenie` VARCHAR(255) NOT NULL,
  10. UNIQUE(
  11.  `haslo` 
  12. )
  13. ) TYPE = MYISAM;";
  14.  
  15.  
  16. $record= "INSERT INTO `slownik` 
  17. (`haslo`, `znaczenie`) VALUES('house', 'dom (budynek)');";
  18.  
  19. $records= "INSERT INTO slownik (haslo, znaczenie) VALUES('house', 'dom (budynek), rodzaj obiektu mieszkalnego.')
  20. ON DUPLICATE KEY UPDATE znaczenie=VALUES(znaczenie);";
  21.  
  22. mysql_query($base);
  23. MYSQL_query($record);
  24. mysql_query($records);
  25.  
  26. ?>
Go to the top of the page
+Quote Post
nevt
post
Post #5





Grupa: Przyjaciele php.pl
Postów: 1 595
Pomógł: 282
Dołączył: 24.09.2007
Skąd: Reda, Pomorskie.

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


napisz dokładnie jakie dostajesz wyniki po wykonaniu tego skryptu... i dlaczego według ciebie są złe... skopiowałem i wkleiłem twój kod SQL u siebie do bazy i wszystko działa ok... tzn. na końcu mam wpis w bazie:

1, 'house', 'dom (budynek), rodzaj obiektu mieszkalnego.'

możliwe że chcesz osiągnąć coś do czego ON DUPLICATE KEY nie służy...
Go to the top of the page
+Quote Post
-Jertvb-
post
Post #6





Goście







Już wiem czemu update nie robi. Ja jadę na krasnalu 2.7 który nie obsługuje mysql powyżej wersji 4 a to zostało dodane w wersji 4,xx . Spróbuję na innym serwerze. (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
aogon
post
Post #7





Grupa: Zarejestrowani
Postów: 10
Pomógł: 0
Dołączył: 15.11.2006

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


Nawiązując do tematu - czy "ON DUPLICATE KEY UPDATE" mogę użyć przy UPDATE, czy tylko przy INSERT?
Go to the top of the page
+Quote Post
erix
post
Post #8





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Tylko przy INSERT. Przeanalizuj całą konstrukcję - wywoływany jest najpierw INSERT, a jeśli dane ustawionego klucza istnieją, wtedy wykonywany jest UPDATE.
Go to the top of the page
+Quote Post
aogon
post
Post #9





Grupa: Zarejestrowani
Postów: 10
Pomógł: 0
Dołączył: 15.11.2006

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


Ok, dzięki! Mam akurat sytuację, w której update może podmienić wpis na podówjny i wtedy jak znalazł byłaby metoda ON DUPLICATE KEY UPDATE. Ale cóz. pokombinuję inaczej. Dzięki raz jeszcze.
Go to the top of the page
+Quote Post

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: 23.08.2025 - 05:27