Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [mysql] LAST_INSER_ID()
Forum PHP.pl > Forum > Przedszkole
Wolfie
Witam


Mam zapytanie za pomoca ktorego wrzucam sobie dane do bazy danych :

  1. function insertData($title, $imgDir, $text, $date, $kategory) {
  2. $this->db->queryInsert("INSERT INTO deigie (id, title, img_dir, text, date, kategory) VALUES (NULL, '$title', '$imgDir', '$text', '$date', '$kategory')");
  3. }



No i teraz probuje sobie zwrocic dane z bazy danych takim zapytaniem :

  1. SELECT * FROM `deigie`.`deigie` WHERE kategory='aktualnosci' AND id=LAST_INSERT_ID();


No ale niestety wyswietla sie pusty wiersz w MySql administratorze, a raczej poprostu nic sie nie wyswietla, ale nie wywala tez zadnego bledu.....tabele mam w innoDB, pole 'id' jest auto_increment......co moze byc nie tak ?

No i w bazie danych sa wiersze poprawnie wprowadzone z kategoria='aktualnosci' i posiadaja oczywiscie id.....
Darti
jak jest autoincrement to może tak (zgaduję):
  1. SELECT * FROM `deigie`.`deigie` WHERE kategory='aktualnosci' AND id=(SELECT MAX(id) FROM deigie);
thek
A pomyślałeś, że może się warunek wzajemnie wykluczać? smile.gif Szybciej będzie to zrobione zamiast podzapytaniem tak:
  1. SELECT * FROM deigie WHERE kategory='aktualnosci'ORDER BY id DESC LIMIT 1
Bo wybierze wszystkie rekordy aktualności, posortuje je według id malejąco i wybierze pierwszego tylko, czyli de facto tego z najwyższym id, a więc najnowszego smile.gif
askone
Cytat(Wolfie @ 10.09.2009, 12:19:21 ) *
No i teraz probuje sobie zwrocic dane z bazy danych takim zapytaniem :
SELECT * FROM `deigie`.`deigie` WHERE kategory='aktualnosci' AND id=LAST_INSERT_ID();

A dlaczego w zapytaniu masz: `deigie`.`deigie`?? Według mnie powinno być tylko `deigie`...
thek
Pewnie baza też się nazywa deigie. Tak więc deigie.deigie to tylko dokładne określenie lokalizacji źródła danych: tabela deigie w bazie deigie. Nic więcej smile.gif

EDIT: Bym zapomniał dodać. A może po drodze coś jeszcze się dodaje do bazy? Niestety baza przechowuje tylko identyfikator ostatniego insert, więc każde następne nadpisze ją i jest kapa, bo wtedy warunek WHERE po prostu będziesz nieprawdziwy. Nie znajdzie żadnego rekordu w wyniku i stąd pustka. Poza tym zawsze mogło nie dodać rekordu i wtedy też będzie warunek najpewniej błędny. Lepiej sprawdzaj jeszcze czy podczas update/insert mysql_query zwraca Ci FALSE czy nie.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.