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

0x01 graphic

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

0x01 graphic

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.