Jak uzyskać kolejny numer (id) ostatnio wstawionego rekordu.doc

(27 KB) Pobierz
[MySQL][PHP] Jak uzyskać kolejny numer (id) ostatnio wstawionego rekordu

[MySQL][PHP] Jak uzyskać kolejny numer (id) ostatnio wstawionego rekordu?

Problem

Chcesz dowiedzieć się, jaki numer ma ostatnio dodany rekord, gdzie pole id jest typu auto_increment.

Rozwiązanie

Bardzo często stosuje się pola id typu auto_increment, których numer jest niepowtarzalny i na dodatek zwiększa się sam, więc nie musimy go pilnować i modyfikować przy wstawianiu rekordu.

Są jednak sytuacje, gdzie trzeba natychmiast po wstawieniu rekordu pobrać aktualny numer id wstawionego rekordu do dalszego przetwarzania. Załóżmy, że dodajesz rekord i chcesz dla niego wstawić obrazek o tym samym numerze id.

Ponieważ numer zwiększa się sam, możesz nie wiedzieć, jaką wartość ma dla wstawionego rekordu. Dlatego trzeba go odczytać (ale bez ponownego pobierania właśnie wpisanych danych z bazy). Odczytajmy go, bo jest to prosta operacja.

Niech nasza przykładowa tabela ma następującą strukturę:

CREATE TABLE ludzie (

  id INT PRIMARY KEY auto_increment,

  imie CHAR(100) NOT NULL,

  nazwisko CHAR(100) NOT NULL

);

Będziemy do niej dodawać imię i nazwisko (numer id sam będzie się powiększał) i za każdym razem, gdy dodamy nowy rekord pobierzemy wartość pola id:

<?

$b=mysql_connect("localhost", "user", "password");

if ($b) {

  $wynik = mysql_select_db("baza1",$b);

  if ($wynik) {

    $wynik=mysql_query(

    "INSERT INTO ludzie (imie,nazwisko) VALUES('$imie','$nazwisko')",$b);

   if ($wynik) echo mysql_insert_id(); // id wstawionego rekordu...

  }

  mysql_close($b);

}

?>

Do pobierania wartości id możesz użyć funkcji mysql_insert_id(). Zwróci ona numer id pola typu auto_increment. Taki sposób jest szybki i pozwala natychmiast otrzymać kolejny numer id.

 

...
Zgłoś jeśli naruszono regulamin