나는 데이터베이스 요리법을 만들었어요; 조리법 이름, ID 번호, 재료, 요리법, 이미지 등 그 후 나는 databese에서 검색 할 수 있도록 PHP 및 HTML 스크립트를 만들었습니다 (예 : 저녁 식사 시간은 45 분 미만). 아니요 새로운 요리법을 삽입하는 PHP 스크립트로 작업하고 있습니다. $ sql1을 삽입 할 수 있습니다. 나는 $ SQL2를 삽입 할 때 그것은 말합니다 : 데이터를 입력 할 수 없습니다 RETVAL 2 : 추가 또는 자식 행을 업데이트 할 수 없습니다 : 외래 키 제약 조건이 실패 (. recepten
benodigdheid
, CONSTRAINT benodigdheid_ibfk_1
FOREIGN KEY (ID
) 참고 문헌 gerecht
(ID
)) 문제가 하위/상위 관계 및 외래 키에 있음을 알고 있지만 문제를 찾을 수 없습니다. 먼저 '성분'에 데이터를 추가해야합니까? 아니면 'Gerecht'에서 처음? 아래 나는 스크립트의 일부를 썼다. 필요한 경우 더 줄 수있다.문제 데이터베이스에 데이터를 삽입
PHP 스크립트는 새로운 조리법을 삽입 :
이$sql1="INSERT INTO Gerecht (gerechtnaam, personen, categorie, bereidingstijd, bereidingswijze, plaatje)
VALUES ('$gerechtnaam','$personen','$categorie','$bereidingstijd','$bereidingswijze','$plaatje')";
$sql2="INSERT INTO Benodigdheid (benodigdheden)
VALUES ('$benodigdheden')";
$sql3="INSERT INTO Product (ingredientnaam, eenheidnaam)
VALUES ('$ingredientnaam1', '$eenheid1')";
$sql4="INSERT INTO Ingredient (ingredientnaam, hoeveelheid)
VALUES ('$ingredientnaam1', '$hoeveelheid1')";
$retval1 = mysqli_query($db, $sql4);
if(! $retval1)
{
die('Could not enter data retval 1: ' . mysqli_error($db));
}
echo "Entered data retval1 successfully\n";
$retval2 = mysqli_query($db, $sql2);
if(! $retval3)
{
die('Could not enter data retval 2: ' . mysqli_error($db));
}
echo "Entered data retval2 successfully\n";
스크립트 데이터베이스를 만들기 : 당신은 Benodigheid
에 삽입 할 때 Gerecht
의 ID를 삽입하려고하지 않는
CREATE TABLE Gerecht
(ID INT(3) AUTO_INCREMENT NOT NULL,
gerechtnaam VARCHAR(35) NOT NULL,
personen NUMERIC(2) NOT NULL,
categorie VARCHAR(25) NOT NULL,
bereidingstijd NUMERIC(3) NOT NULL,
bereidingswijze TEXT NOT NULL,
plaatje VARCHAR(250) NOT NULL,
PRIMARY KEY (ID)
);
CREATE TABLE Benodigdheid
(ID INT(3) NOT NULL,
benodigdheden VARCHAR(35) NOT NULL,
PRIMARY KEY (ID, benodigdheden),
FOREIGN KEY (ID) REFERENCES Gerecht (ID)
);
CREATE TABLE Eenheid
(eenheidnaam VARCHAR(12) NOT NULL,
PRIMARY KEY (eenheidnaam)
);
CREATE TABLE Product
(ingredientnaam VARCHAR(35) NOT NULL,
eenheidnaam VARCHAR(12),
PRIMARY KEY (ingredientnaam),
FOREIGN KEY (eenheidnaam) REFERENCES Eenheid (eenheidnaam)
);
CREATE TABLE Ingredient
(ID INT(3) NOT NULL,
ingredientnaam VARCHAR(35) NOT NULL,
hoeveelheid NUMERIC(4) NOT NULL,
PRIMARY KEY (ID, ingredientnaam),
FOREIGN KEY (ID) REFERENCES Gerecht (ID),
FOREIGN KEY (ingredientnaam) REFERENCES Product (ingredientnaam)
);
감사합니다. Mike. 'Benodigdheid'는 부엌 용품입니다. 때때로 조리법에는 하나 이상의 주방 용품이 필요하기 때문에 내가 여분의 테이블을 만들었습니다. 한 접시에 하나의 신분증 만 있으면됩니다. 그래서 새로운 레서피를 추가 할 때 하나의 ID (자동 증가)를 만들어 다른 테이블에 사용해야합니다. 하지만 당신이 준 스크립트가 효과가 있다고 생각합니다. – sophie
@sophie'Benodigheid' 테이블에 대한 합리적인 스키마는 자동 증가 기본 키,'Gerecht'에서 ID를 참조하는'berecht_id '와 같은 외부 데이터 필드 그리고 데이터 필드를 가질 것입니다. 그래서 세 개의 열이 아니라 두 개의 열. (3) NULL NOT 표 Benodigdheid (IDbenodigdheid INT (3) AUTO_INCREMENT NOT NULL, ID의 INT, NULL NOT VARCHAR benodigdheden (35), PRIMARY KEY를 CREATE (IDbenodigdheid, benodigdheden), : –
나는로 변경 외래 키 (ID) 참조 Gerecht (ID) ); 하지만 여전히 같은 오류가 발생합니다. – sophie