Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Instrukcja UPDATE
Forum PHP.pl > Forum > Przedszkole
bartos
Witam!

Jeśli ktoś z forumowiczów spotkał się już z problemem, który opiszę poniżej proszę o odpowiedź!

Zakładamy, że mamy dowolny skrypt, który nawiązuje połączenie z bazą danych, a następnie wykonuje zapytanie zawierające instrukcję UPDATE.
Zapytanie jest wykonywane podwójnie. Np.:
  1. <?php
  2.  
  3.  // ... polaczenie zostalo nawiazane, a stosowna baza wybrana ...
  4.  $query = "UPDATE `tabela` SET `pole1`='wartosc' WHERE `pole2`=1";
  5.  mysql_query($query);
  6.  //usleep(500000);
  7.  mysql_query($query);
  8.  
  9. ?>


Okazuje się, że po wykonaniu IDENTYCZNEGO zapytania (odnoszącego się do tych samych danych) dwukrotnie w tym samym czasie (do 0.5s) okazuje się, że drugie zapytanie nie jest już wykonywane.
Jeżeli opóźnimy 2 zapytanie o 0.5s to oba zapytania zostaną wykonane poprawnie.

Czy istnieje inny sposób (bez wykorzystania funkcji sleep, usleep) opóźnienia zapytań tak, aby mogły wykonać się jedno po drugim?
mike
Hehe, tez kiedyś się na to nadziałem, ale nauczony doświadczeniem już wiem dlaczego tak sie dzieje.

Baza danych nie wykonuje polecenia UPDATE jeśli wstawiane wartości są identyczne z wartościemi obecnymi w rekordzie.

Stąd Twoje drugie zapytanie nie jest wykonywane.

Obserwacje poczynione na MySQL'u, choć podejrzewam, że taka jest specyfika każdej bazy.
ghostrider
jest tez:
  1. <?php
  2.  
  3. $result_str = mysql_info($link)
  4. ?>

czesto korzystam aby sie dowiec dokladnie co sie stalo po wywolaniu zapytania

Kod
UPDATE
String format: Rows matched: 65 Changed: 65 Warnings: 0

potem kropelka wyrazen regularnych i juz moge wyswietlac, takie obejscie mysql_affected_rows dla zapytań UPDATE
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.