Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: @last
Forum PHP.pl > Forum > Przedszkole
bobens_83
Witam. Chcialbym spytac jak stosuje sie @last dla pobrania wartosci ostatnio dodanego id. Kakretnie mam taki kod (2 tabele: news i img):

  1. <?php
  2. $db = new mysqli( 'localhost', $user, $pass, 'feniks' );
  3. $q = "insert into news(autor_news, user_news, tytul_news, tresc_news, data_news) values('".$autor_news."', '".$user."', '".$tytul_news."', '".$tresc_news."', NOW())"; // autoincrement: id_news
  4. $wynik = $db->query($q);
  5. $q2 = "SELECT @last := LAST_INSERT_ID()";
  6. $wynik2 = $db->query($q2);
  7. $q3 = "insert into img( id_news ) values( @last ) "; // tutaj autoincrement: id_img
  8. $wynik3 = $db->query($q3);
  9. $db->close();
  10. ?>


cos jest nie tak bo do tabeli img nie dodaje sie id_news. Prosze o komentarz. Pozdrawiam.
AxZx
$last_id = mysql_insert_id ();
bobens_83
echo dziala dobrze, natomiast nie wstawia wartosci do drugiel tabeli ohmy.gif

  1. <?php
  2. $db = new mysqli( 'localhost', $user, $pass, 'feniks' );
  3. $q = "insert into news( autor_news, user_news, tytul_news, tresc_news, data_news) values( '".$autor_news."', '".$user."', '".$tytul_news."', '".$tresc_news."', NOW())";
  4. $db->query($q);
  5.  
  6. echo $db->insert_id;
  7.  
  8. $q3 = "insert into img( id_news ) values( '".$db->insert_id."' ) ";
  9. $db->query($q3);
  10. $db->close();
  11. ?>


w drugiej tabeli img sa 2 pola: id_img i id_news, przy czym id_img to autoincrement.

Czy ma tu znaczenie ze nie ustawilem dla id_news w drugiej tabeli REFERENCES ?
SongoQ
Cytat
$last_id = mysql_insert_id ();

Chodzilo o mysqli.

@bobens_83 Zrob echo $q3 i sprawsz czy jest poprawne zapytanie.
bobens_83
Tzn kod jest dobry? Wole stosowac OOP bo na tak sie uczylem z ksiazki i jakos mi to pasuje. A kurcze zapytanie gra:

Cytat
insert into img( id_news ) values( '13' )


Czy cos robie zle?
SongoQ
Ale masz jakis blad?
bobens_83
Nie wiem czy dobrze zinterpretowalem
Cytat
@bobens_83 Zrob echo $q3 i sprawsz czy jest poprawne zapytanie.
Kod jest taki
  1. <?php
  2. $db = new mysqli( 'localhost', $user, $pass, 'feniks' );
  3. $q = "insert into news( autor_news, user_news, tytul_news, tresc_news, data_news) values( '".$autor_news."', '".$user."', '".$tytul_news."', '".$tresc_news."', NOW())";
  4. $db->query($q);
  5. $q3 = "insert into img( id_news ) values( '".$db->insert_id."' ) ";
  6.  
  7. echo $q3;
  8.  
  9. $db->query($q3);
  10. $db->close();
  11. ?>


I nie wywala zadnych bledow, tylko pokazuje tresc zapytania, ktora jak dla mnie jest ok (i tresc strony).
SongoQ
Jesli nie ma bledow i nie dodaje czyli nie masz pokazywania bledow. Recznie sprawdzales czy zapytanie sie doda? Moze cos masz ze struktura nie tak i jakies powiazania sa, ktore trzymaja.
bobens_83
zrobilem prosciutki skrypt:
  1. <?php
  2. $db = new mysqli( 'localhost', 'root', '', 'feniks' );
  3. $q = "INSERT INTO img( id_news ) values( '10' )";
  4. $db->query($q);
  5. $db->close();
  6. ?>
i dodaje bez problemu. Chyba musze sie przespac ... blink.gif Wielkie dzieki za poswiecony czas SongoQ
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.