Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php][MYSQL]wątpliwości z auto_increment,, LAST_INSERT_ID(), itp...
missile
post
Post #1





Grupa: Zarejestrowani
Postów: 34
Pomógł: 0
Dołączył: 12.11.2005
Skąd: hen hen

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


Witam.

Pracuje aktualnie nad zwiększaniem wartości pola auto_increment/primary key o 1.
Wiem, istnieje kilka funkcji php oraz mysql np: mysql_insert_id() lub LAST_INSERT_ID(), jednak zwracają one wartość ostatniego polecenia INSERT. A co jeśli to polecenie jest pierwszym poleceniem w skrypcie i nie ma z czego ściągnąć wartości? Ja, korzystają z informacji znalezionych na tym forum stworzyłem coś takiego:

  1. <?php
  2.  
  3. include('_forum/_connection.php');
  4.  
  5.  $sql_query = "SELECT MAX(post_id) FROM posts ";
  6.  
  7.  $sql_result = mysql_query($sql_query, $conn)
  8. or die(mysql_error() . '<br /><br />Błąd pobierania najwiekszej wartości pola post_id!' . $sql_query);
  9.  
  10. while ($sql_row = mysql_fetch_array($sql_result, MYSQL_NUM)) {
  11. $sql_row[0]++;
  12. $NextPostId = $sql_row[0];
  13.  }
  14.  
  15.  $AddDate = date('Y-m-d H:i:s');
  16.  
  17. $sql_query = "INSERT INTO posts 
  18. (post_id,
  19. post_author_id)
  20. VALUES
  21. ('" . $NextPostId . "',
  22. '" . $_SESSION['UserId'] . "')";
  23.  
  24.  mysql_query($sql_query, $conn);
  25.  
  26. ?>


...skrypt działa, jednak istnieje możliwość, że w czasie pomiędzy wykonaniem polecenia SELECT i INSERT zostanie zmieniona wartość pola post_id. W takim wypadku mysql zgłosi błąd. Jeśli ma ktoś jakiś ciekawy pomysł, przedewszystkim prostszy chętnie wysłucham...

Pozdrawiam

Ten post edytował missile 21.03.2006, 10:13:57


--------------------
Ważne, by mieć cel... Bo czym jest życie bez niego...
Go to the top of the page
+Quote Post

Posty w temacie


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 Aktualny czas: 19.08.2025 - 19:03