uczeń php
30.06.2010, 14:03:36
phpmyadmin wyświetla mi następujący warunek #1452 - Cannot add or update a child row: a foreign key constraint fails (`pozycja_w_google/google`, CONSTRAINT `strony www_ID_fk` FOREIGN KEY (`ID`) REFERENCES `strony www` (`ID`))
Mam dwie tabele jedną z kluczem obcym kod php wstawia mi dane do tylko jednej tabeli do drugiej tabeli z tym kluczem obcym dane nie są wstawiane natomiast wstawienie polecenia insert into do okienka sql w phpmyadminie pokazuje mi warunek ten co u góry.
darko
30.06.2010, 14:10:32
Próbujesz wstawić rekord z nieistniejącą wartością klucza obcego tabeli zależnej. Najpierw wstaw rekord do tabeli podstawowej (musisz nadać wartość klucza głównego, który jest jednocześnie kluczem obcym w tabeli, z którą masz problemy), obrazowo:
tab1
id_tab1 (PK)
cos_tam1
cos_tam2
tab2
id_tab2 (PK)
id_tab1 (FK)
cos_tam1
cos_tam2
i teraz najpierw musisz zrobić insert do tab1, żeby uzyskać wartość id_tab1. Mam nadzieję, że nie namieszałem. Pzdr.
uczeń php
30.06.2010, 14:52:19
klucz główny w tabeli nadrzędnej ID int(11) not null auto_increment primary key i w tej pierwszej wartości są wstawiane z tego klucza głównego korzysta druga tabela ale kod php polecenie insert into nie działa, żadne dane nie są wstawiane do drugiej tabeli. Nie wiem czy dobrze ułozyłem zapytanie insert into do drugiej tabeli ale wydaje mi się że można pominąć te wartości. Tak samo jak: insert into nazwatabeli ('imie') values ('Jan') pole ID zostało pominięte dla ID int(11) not null auto_increment ID - jest wstawiane automtycznie i mi się wydaje że tak samo w przypadku kluczy obcych z innych tabel też można pominąć a wartości będą wstawiane automatycznie. No a może się mylę ?
darko
30.06.2010, 14:59:30
Cytat(uczeń php @ 30.06.2010, 15:52:19 )

klucz główny w tabeli nadrzędnej ID int(11) not null auto_increment primary key i w tej pierwszej wartości są wstawiane z tego klucza głównego korzysta druga tabela ale kod php polecenie insert into nie działa, żadne dane nie są wstawiane do drugiej tabeli. Nie wiem czy dobrze ułozyłem zapytanie insert into do drugiej tabeli ale wydaje mi się że można pominąć te wartości. Tak samo jak: insert into nazwatabeli ('imie') values ('Jan') pole ID zostało pominięte dla ID int(11) not null auto_increment ID - jest wstawiane automtycznie i mi się wydaje że tak samo w przypadku kluczy obcych z innych tabel też można pominąć a wartości będą wstawiane automatycznie. No a może się mylę ?
Mylisz się częściowo. Jeśli wstawiasz rekord(y) do tabeli powiązanej (w Twoim przypadku to będzie ta druga tabela) z jakąkolwiek inną tabelą (i masz poustawiane indeksy) to musisz podać wartość klucza obcego, do którego odnosi się dany rekord, inaczej dane nie zostaną wstawione, skąd niby silnik bazy ma wiedzieć, o który klucz Ci chodzi? Pokaż jeszcze zapytanie insert do obydwu tabel, rzuć kawałkiem kodu. Zobaczymy czy o to chodzi.
uczeń php
30.06.2010, 15:08:15
pierwsza tabela | ID | STRONY WWW | SLOWA FRAZY | - ID klucz główny auto_incerement int
druga tabela | LP | ID | SERWERY GOOGLE | STRONY WWW | SLOWA FRAZY | DATA | POZYCJA W GOOGLE | - LP - klucz główny ID - klucz obcy
a oto zapytania sql
foreach($slowa as $wyniki) {
$pozycja_w_google = $pozycja_strony->getPosition($wyniki, $url);
$zapytanie = "INSERT INTO `pozycja_w_google`.`strony www` (`STRONY WWW` , `SLOWA I FRAZY`) VALUES ('".$url."', '".$wyniki."')";
mysql_query($zapytanie);
print "<!-- Zapytanie; $zapytanie -->";
$zapytanie1 = "INSERT INTO `pozycja_w_google`.`google`
(`SERWERY GOOGLE`,`STRONY WWW` , `SLOWA FRAZY`,`DATA`, `POZYCJA W GOOGLE`) VALUES
('google.pl','".$url."', '".$wyniki."','".date("Y-m-d")."','".$pozycja_w_google."')";
mysql_query($zapytanie1);
print "<!-- Zapytanie; $zapytanie1 -->";
}
darko
30.06.2010, 15:13:20
Ale w czym problem tkwi? Wstaw na chama idka:
$zapytanie1 = "INSERT INTO `pozycja_w_google`.`google`
(`ID`, `SERWERY GOOGLE`,`STRONY WWW` , `SLOWA FRAZY`,`DATA`, `POZYCJA W GOOGLE`) VALUES
(" . mysql_insert_id() . "'google.pl','".$url."', '".$wyniki."','".date("Y-m-d")."','".$pozycja_w_google."')";
uczeń php
30.06.2010, 15:23:44
zapytanie1 nie miałem wstawionej kolumny `ID` i mysql_insert_id() ale teraz działa jak należy bo dane zostały wstawione.
Dzięki za pomoc
darko
30.06.2010, 15:29:33
Cytat(uczeń php @ 30.06.2010, 16:23:44 )

zapytanie1 nie miałem wstawionej kolumny `ID` i mysql_insert_id() ale teraz działa jak należy bo dane zostały wstawione.
Dzięki za pomoc
Proszę bardzo.
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.