[MySQL][PHP] Jak uzyskać kolejny numer (id) ostatnio wstawionego rekordu?
Chcesz dowiedzieć się, jaki numer ma ostatnio dodany rekord, gdzie pole id jest typu auto_increment.
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.