0
"Image Table"로 알려진 테이블과 "Image_Question"테이블로 알려진 테이블에 데이터를 추가하는 PHP 코드가 있습니다. 내가 직면하고있는 문제는 "Image"테이블에 삽입하는 동안 "Image_Question"테이블에 데이터를 삽입하지 않는다는 것입니다.테이블에 데이터를 삽입하지 않습니다.
이제는 문제없이 두 테이블에 데이터를 삽입 할 수 있었기 때문에 PHP 코드가 올바르다는 것을 알고 있습니다.
테이블에 인덱스와 외래 키를 추가 한 후에 만이 문제가 발생하기 시작했습니다. Image_Question 표는 해당 테이블에 관련된 여기
move_uploaded_file($_FILES["fileImage"]["tmp_name"],"ImageFiles/" . $_FILES["fileImage"]["name"]);
$imagesql = "INSERT INTO Image (ImageFile) VALUES (?)";
if (!$insert = $mysqli->prepare($imagesql)) {
// Handle errors with prepare operation here
}
//Don't pass data directly to bind_param store it in a variable
$insert->bind_param("s",$img);
//Assign the variable
$img = 'ImageFiles/'.$_FILES['fileImage']['name'];
$insert->execute();
if ($insert->errno) {
// Handle query error here
}
$insert->close();
$lastID = $mysqli->insert_id;
$imagequestionsql = "INSERT INTO Image_Question (ImageId, SessionId, QuestionId) VALUES (?, ?, ?)";
if (!$insertimagequestion = $mysqli->prepare($imagequestionsql)) {
// Handle errors with prepare operation here
echo "Prepare statement err imagequestion";
}
$qnum = (int)$_POST['numimage'];
$insertimagequestion->bind_param("isi",$lastID, $sessid, $qnum);
$sessid = $_SESSION['id'] . ($_SESSION['initial_count'] > 1 ? $_SESSION['sessionCount'] : '');
$insertimagequestion->execute();
if ($insertimagequestion->errno) {
// Handle query error here
}
$insertimagequestion->close();
또한 이미지 테이블에 대한 SHOW CREATE TABLE
의 출력, Image_Question 표와 질문 표입니다 : 아래
이미지 테이블 :
CREATE TABLE `Image` (
`ImageId` int(10) NOT NULL AUTO_INCREMENT,
`ImageFile` varchar(250) NOT NULL,
PRIMARY KEY (`ImageId`)
) ENGINE=InnoDB AUTO_INCREMENT=12 DEFAULT CHARSET=utf8
Image_Question 테이블 :
,CREATE TABLE `Image_Question` (
`ImageQuestionId` int(10) NOT NULL AUTO_INCREMENT,
`ImageId` int(10) NOT NULL,
`SessionId` varchar(10) NOT NULL,
`QuestionId` int(5) NOT NULL,
PRIMARY KEY (`ImageQuestionId`),
KEY `FK_QuestionImage` (`ImageId`),
KEY `questionId` (`QuestionId`),
KEY `sessionId` (`SessionId`),
CONSTRAINT `FK_Image_Question` FOREIGN KEY (`SessionId`) REFERENCES `Question` (`SessionId`) ON DELETE CASCADE,
CONSTRAINT `FK_question` FOREIGN KEY (`QuestionId`) REFERENCES `Question` (`QuestionId`) ON DELETE CASCADE,
CONSTRAINT `FK_QuestionImage` FOREIGN KEY (`ImageId`) REFERENCES `Image` (`ImageId`) ON DELETE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8
질문 표 :
CREATE TABLE `Question` (
`SessionId` varchar(10) NOT NULL DEFAULT '',
`QuestionId` int(5) NOT NULL,
`QuestionContent` varchar(5000) NOT NULL,
`NoofAnswers` int(2) NOT NULL,
`AnswerId` int(10) NOT NULL AUTO_INCREMENT,
`ReplyId` varchar(2) NOT NULL,
`QuestionMarks` int(4) NOT NULL,
`OptionId` varchar(3) NOT NULL,
PRIMARY KEY (`SessionId`,`QuestionId`),
KEY `FK_Option_Table` (`OptionId`),
KEY `FK_IndividualQuestion` (`QuestionId`),
KEY `FK_Reply` (`ReplyId`),
KEY `FK_AnswerId` (`AnswerId`)
) ENGINE=InnoDB AUTO_INCREMENT=76 DEFAULT CHARSET=utf8
다른 사람이 읽을 필요로 코드를 들여이 웹 사이트에 제대로 편집 도구를 사용하여 자신을 편안하게하세요 그것. 나는 당신의 대답이 쉽게 대답 될 수 있다고 확신합니다. 또한 MySQL이 오류 메시지를 돌려 주는지 알고있는 것이 좋습니다. 외래 키의 제약 조건이 일치하지 않으면 삽입이 거부 될 수 있습니다. – hakre
인덱스와 포그 키가있을 때'Image_Question' 테이블에 삽입하려고 할 때 발생한 오류를 게시 할 수 있습니까? 왜냐하면 아마도'Image_Question' 테이블에 데이터를 삽입 할 때이 데이터는이 테이블의 외래 키 제약 조건을 충족시켜야하기 때문입니다. 'SessionId'와'QuestionId' 두 필드의 값을 확인하십시오. –