Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Instrukcja UPDATE
bartos
post 1.11.2005, 22:57:08
Post #1





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 10.11.2004

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


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?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 2)
mike
post 1.11.2005, 23:07:09
Post #2





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

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


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.
Go to the top of the page
+Quote Post
ghostrider
post 2.11.2005, 10:08:22
Post #3





Grupa: Zarejestrowani
Postów: 135
Pomógł: 0
Dołączył: 30.09.2005
Skąd: k-rk

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


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


--------------------
There are 10 types of people in the world:
-Those who understand binary, and those who don't...
There's no place like 127.0.0.1
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 Wersja Lo-Fi Aktualny czas: 14.08.2025 - 04:34