Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Problem z komendą SQL z poziomu PHP
Forum PHP.pl > Forum > PHP
Rahman
Witam

Chciałem sobię zrobić panelik magazyniera, który przykładowo dodaje produkty do sklepu.

Moze na początek opiszę budowę bazy.

Kategoria:

1.ID_kat pk
2.nazwa_kat

Dyscyplina:

1.ID_dyscypliny pk
2. nazwa_dysc

Produkty.

1.ID_prod pk
2.ID_kat fk
3.ID_dyscypliny fk
itd...

W swoim skrypcie mam takie sql:

Kod
            $query= "INSERT INTO produkty (ID_prod, ID_kat, ID_dyscyplina, nazwa_prod, cena, dostepny, opis_prod)"
        ."VALUES (NULL, '".$nazwa_prod."' ,'".$kategoria."' ,'".$dyscyplina."' ,'".$cena."' ,'".$dostepny."' ,'".$opis_prod."')";


i kiedy próbuje wykonać skrypt to:

Kod
Invalid query: Cannot add or update a child row: a foreign key constraint fails (`sklep/produkty`, CONSTRAINT `produkty_ibfk_1` FOREIGN KEY (`ID_kat`) REFERENCES `kategoria` (`ID_kat`))

INSERT INTO produkty (ID_prod, ID_kat, ID_dyscyplina, nazwa_prod, cena, dostepny, opis_prod)VALUES (NULL, 'sadsdasd' ,'1' ,'1' ,'200.00' ,'Tak' ,'Tutaj podaj opis produktu')


Dziwne dla mnie jest że dodawanie produktu z poziomy phpMyadmin dziala np:


Kod
INSERT INTO `sklep`.`produkty` (
`ID_prod` ,
`ID_kat` ,
`ID_dyscyplina` ,
`nazwa_prod` ,
`cena` ,
`dostepny` ,
`opis_prod` ,
`data_dodania`
)
VALUES (
NULL , '1', '1', 'asadasd', '200.00', 'Tak', '2343243432', NOW( )
);


I to działa, nie wiem juz o co chodzi.

Pomoże ktoś?

Pozdrawiam
merk
Jeżeli chodzi o:
  1. <?php
  2. Invalid query: Cannot add or update a child row: a foreign key constraint fails (`sklep/produkty`, CONSTRAINT `produkty_ibfk_1` FOREIGN KEY (`ID_kat`) REFERENCES `kategoria` (`ID_kat`))
  3.  
  4. INSERT INTO produkty (ID_prod, ID_kat, ID_dyscyplina, nazwa_prod, cena, dostepny, opis_prod)VALUES (NULL, 'sadsdasd' ,'1' ,'1' ,'200.00' ,'Tak' ,'Tutaj podaj opis produktu')
  5. ?>


Jest to komunikat że referencja w bazie nie jest poprawna, nie ma klucza obcego ID_KAT, tutaj nie ma kategorii o ID_kat='sadsdasd' smile.gif
Poprawnie zbudowany insert:

  1. <?php
  2. $query="
  3. INSERT INTO produkty (ID_prod, ID_kat, ID_dyscyplina, nazwa_prod, cena, dostepny, opis_prod)
  4. VALUES (NULL, '".$kategoria."' ,'".$dyscyplina."', '".$nazwa_prod."' ,'".$cena."' ,'".$dostepny."' ,'".$opis_prod."')";
  5. ?>


Jeżeli ID_prod jest auto_increment'owane nie musisz podawać ID_prod=NULL w zapytaniu.
Rahman
dzięki merk, wszystko juz działa

pozdrawiam
LonelyKnight
Cytat(merk @ 21.05.2008, 00:14:09 ) *
  1. <?php
  2. $query="
  3. INSERT INTO produkty (ID_prod, ID_kat, ID_dyscyplina, nazwa_prod, cena, dostepny, opis_prod)
  4. VALUES (NULL, '".$kategoria."' ,'".$dyscyplina."', '".$nazwa_prod."' ,'".$cena."' ,'".$dostepny."' ,'".$opis_prod."')";
  5. ?>


Po co łączysz tak te stringi? Nie lepiej:

  1. <?php
  2. $query="
  3. INSERT INTO produkty (ID_prod, ID_kat, ID_dyscyplina, nazwa_prod, cena, dostepny, opis_prod)
  4. VALUES (NULL, $kategoria ,$dyscyplina, '$nazwa_prod' ,'$cena' ,'$dostepny' ,'$opis_prod')";
  5. ?>


To z ID_* to INT'y? Jeśli tak to wstawisz bez ciapek ( ' ).
Rahman
no dzięki

Pozdrawiam
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.