Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Problem z komendą SQL z poziomu PHP
Rahman
post
Post #1





Grupa: Zarejestrowani
Postów: 20
Pomógł: 0
Dołączył: 10.01.2008

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


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

Ten post edytował Rahman 20.05.2008, 22:31:34
Go to the top of the page
+Quote Post
merk
post
Post #2





Grupa: Zarejestrowani
Postów: 30
Pomógł: 7
Dołączył: 31.05.2006

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


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.

Ten post edytował merk 20.05.2008, 23:16:09


--------------------
Kwatery prywatne
Go to the top of the page
+Quote Post
Rahman
post
Post #3





Grupa: Zarejestrowani
Postów: 20
Pomógł: 0
Dołączył: 10.01.2008

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


dzięki merk, wszystko juz działa

pozdrawiam

Ten post edytował Rahman 21.05.2008, 12:53:39
Go to the top of the page
+Quote Post
LonelyKnight
post
Post #4





Grupa: Zarejestrowani
Postów: 240
Pomógł: 13
Dołączył: 1.06.2007
Skąd: Wrocław

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


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 ( ' ).

Ten post edytował LonelyKnight 21.05.2008, 12:55:02


--------------------
Good programming is 99% sweat and 1% coffee.
Make it idiot proof and someone will make a better idiot...
Go to the top of the page
+Quote Post
Rahman
post
Post #5





Grupa: Zarejestrowani
Postów: 20
Pomógł: 0
Dołączył: 10.01.2008

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


no dzięki

Pozdrawiam
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: 21.08.2025 - 06:09