Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Błąd dodania danych - klucz obcy, Błąd dodawania danych gdy ustawiony Kluc
radca78
post
Post #1





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 2.01.2006

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


Witam

Mam 3 tabele (innoDB).

1. klienci (klientid-klucz glw., pole1, pole2...)
2. ksiazki (ksiazkaid-klucz glw., klientid-klucz obcy do klientid z tabeli klienci, pole1, pole2...)
3. opisy (ksiazkaid-klucz obcy do ksiazkaid z tabeli ksiazki)

Bez ustawionych kluczy obcych, wszystkie dane moge dodawac. Po ustawieniu kluczy jak powyzaj nie moge dodac danych.

Komunikat przy dodaniu danych:
Cannot add or update a child row: a foreign key constraint fails

Poradzcie cos sad.gif
Go to the top of the page
+Quote Post
DeyV
post
Post #2





Grupa: Zarząd
Postów: 2 277
Pomógł: 6
Dołączył: 27.12.2002
Skąd: Wołów/Wrocław




Jeżeli są wprowadzone klucze obce i związki oparte na nich, to znaczy, że baza sama bedzie pilnować, byś wprowadzał dane w odpowiedniej kolejności.
W tym przypadku najpierw muisz dodać odpowiedniego klienta, dopiero potem możesz dodać książkę, a dopiero na samym końcu - odpowiedni dla danej książki opis.

Swoją drogą - mam wrażenie, że ten projekt jest nieco chybiony. Co to za baza, w której każda wprowadzona książka musi mieć klienta?


--------------------
"Niezależnie od tego, jakie masz osiągnięcia, ktoś Ci pomaga..."
Go to the top of the page
+Quote Post
radca78
post
Post #3





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 2.01.2006

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


Kolejność dodawania danych nie ma raczej znaczenia, modyfikując skrypt dodający dane (kolejność ich dodawania) zawsze mogę dodać tylko dane do tablei klienci. Przy pozostalych tabelach mam blad.

Pomijając oczywiście fakt, gdzie której każda wprowadzona książka musi mieć klienta - to tylko przykladowa nazwa.
Go to the top of the page
+Quote Post
DeyV
post
Post #4





Grupa: Zarząd
Postów: 2 277
Pomógł: 6
Dołączył: 27.12.2002
Skąd: Wołów/Wrocław




Nawet wtedy, gdzy odpowiednie gdy istnieje odpowiedni rekord w tabeli zewnętrznej? Czyli np. klient, lub książka?


--------------------
"Niezależnie od tego, jakie masz osiągnięcia, ktoś Ci pomaga..."
Go to the top of the page
+Quote Post
radca78
post
Post #5





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 2.01.2006

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


Dane dodaje jednym formularzem (wszystko razem) do 3 tabel. Tworzę 3 zmienne i kazda z nich jest sprawdzana czy zostala dodana do tablei czy nie.
  1. <?php
  2.  
  3. $wynik1 = mysql_query("INSERT INTO klienci (pole1, pole2, ...) VALUES ('$wart1' , '$wart1' , ...)");
  4. if ($wynik1) {
  5. echo "Dodane dane personalne<br />";
  6. }
  7. else echo "Dane personalne. Błąd: " .mysql_error().__LINE__;
  8.  
  9. $wynik2 = mysql_query("INSERT INTO ksiazki(pole1, pole2, ...) VALUES ('$wart1' , '$wart1' , ...)");
  10. if ($wynik2) {
  11. echo "Dodane dane ksiazek<br />";
  12. }
  13. else echo "Dane ksiazek. Błąd: " .mysql_error().__LINE__;
  14.  
  15. ?>


poprawiam
---
nospor


zmienna 3 analogicznie. Poprawnie dodaje mi tylko zmienna z danymi z $wynik1 - niezaleznie od kolejnosci ich zapisywania. Pozostale 2 zmienne zwracaja komunikat o bledzie.
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 - 07:46