Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP][MySQL] Podzapytanie w Insert
adas007
post
Post #1





Grupa: Zarejestrowani
Postów: 72
Pomógł: 0
Dołączył: 9.03.2007

Ostrzeżenie: (0%)
-----


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?
Go to the top of the page
+Quote Post
nospor
post
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




No jako value nie możesz podać zapytania.

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


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
adas007
post
Post #3





Grupa: Zarejestrowani
Postów: 72
Pomógł: 0
Dołączył: 9.03.2007

Ostrzeżenie: (0%)
-----



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.

Ten post edytował adas007 23.03.2011, 10:23:32
Go to the top of the page
+Quote Post
Zyx
post
Post #4





Grupa: Zarejestrowani
Postów: 952
Pomógł: 154
Dołączył: 20.01.2007
Skąd: /dev/oracle

Ostrzeżenie: (0%)
-----


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();


--------------------
Specjalista ds. głupich i beznadziejnych, Zyx
Nowości wydawnicze: Open Power Collector 3.0.1.0 | Open Power Autoloader 3.0.3.0
Go to the top of the page
+Quote Post
sadistic_son
post
Post #5





Grupa: Zarejestrowani
Postów: 1 495
Pomógł: 245
Dołączył: 1.07.2009
Skąd: Bydgoszcz

Ostrzeżenie: (0%)
-----


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.

Ten post edytował sadistic_son 23.03.2011, 11:22:57


--------------------
Uśpieni przez system, wychowani przez media,
Karmieni zmysłami, próżnymi żądzami...

-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
Jesteś zbyt leniwy, żeby się zarejestrować? Ja jestem zbyt leniwy aby Ci pomóc!
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 19.08.2025 - 04:59