Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MySQL] Podzapytanie w Insert
Forum PHP.pl > Forum > Przedszkole
adas007
Witam wykonuję takie zapytanie:

  1. $query = "INSERT INTO tabfoto(ogloszenieid, foto)
  2. VALUES ((SELECT MAX(ogloszenieid) FROM tabogloszen), '$foto')";


Dostaję błąd:

Something is wrong in your syntax obok 'SELECT MAX(ogloszenieid) FROM tabogloszen), 'zdjecia/DSC02271.JP' w linii 2


Gdzie popełniam błąd?
nospor
No jako value nie możesz podać zapytania.

edit:
patrząc na manuala to jednak można...
adas007

Bardzo możliwe, że źle podchodzę do problemu także napiszę po co mi to jest:

Mam dwie tabele:
tabogloszen - tutaj zapisuję treść ogłoszeń i mam klucz główny ogloszenieid

tabfoto - tutaj zapisuję ścieżki do zdjęć i mam klucz obcy ogloszenieid, który wiąże mi zdjęcia z ogłoszeniami.

Gdy dodaję treść ogłoszenia to autoinkrementuje mi się kolumna tabogloszen.ogloszenieid. W zapytaniu powyżej chcę wykorzystać tą ostanią wpisaną wartość: tabogloszen.ogloszenieid i wpisać ją do tabfoto.ogloszenieid. Ponieważ tabogloszen.ogloszenieid autoinkrementuje się to ostatnia watość jest wartością największą stąd to podzapytanie w value.
Zyx
Kombinujesz, jak koń pod górę.

  1. $pdo->beginTransaction();
  2.  
  3. $stmt = $pdo->prepare('INSERT INTO tabogloszen ...');
  4. $stmt->bindValue(...);
  5. $stmt->execute();
  6.  
  7. $ogloszenieId = $pdo->lastInsertId();
  8.  
  9. $stmt = $pdo->prepare('INSERT INTO tabfoto VALUES(:oid, :foto)');
  10. $stmt->bindValue(':oid', $ogloszenieId);
  11. $stmt->bindValue(':foto', $foto);
  12. $stmt->execute();
  13.  
  14. $pdo->commit();
sadistic_son
Cytat(adas007 @ 23.03.2011, 10:22:53 ) *
W zapytaniu powyżej chcę wykorzystać tą ostanią wpisaną wartość: tabogloszen.ogloszenieid i wpisać ją do tabfoto.ogloszenieid. Ponieważ tabogloszen.ogloszenieid autoinkrementuje się to ostatnia watość jest wartością największą stąd to podzapytanie w value.
W takim razie zamiast powyższych ceregieli użyj mysql_insert_id i będziesz miał id poprzednio zapisanego rekordu który użyjesz w swoim powyższym zapytaniu.
  1. $last_id=mysql_insert_id();
  2. $query = "INSERT INTO tabfoto(ogloszenieid, foto) VALUES ($last_id, '$foto')";

Swoją drogą to bardzo ciekawe:
Cytat(nospor @ 23.03.2011, 09:57:11 ) *
No jako value nie możesz podać zapytania.

edit:
patrząc na manuala to jednak można...
Też nie wiedziałem, że można.
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.