2012-09-30 3 views
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 표와 질문 표입니다 : 아래

두 테이블에 데이터를 삽입하는 PHP 코드입니다 :

이미지 테이블 :

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 
+0

다른 사람이 읽을 필요로 코드를 들여이 웹 사이트에 제대로 편집 도구를 사용하여 자신을 편안하게하세요 그것. 나는 당신의 대답이 쉽게 대답 될 수 있다고 확신합니다. 또한 MySQL이 오류 메시지를 돌려 주는지 알고있는 것이 좋습니다. 외래 키의 제약 조건이 일치하지 않으면 삽입이 거부 될 수 있습니다. – hakre

+2

인덱스와 포그 키가있을 때'Image_Question' 테이블에 삽입하려고 할 때 발생한 오류를 게시 할 수 있습니까? 왜냐하면 아마도'Image_Question' 테이블에 데이터를 삽입 할 때이 데이터는이 테이블의 외래 키 제약 조건을 충족시켜야하기 때문입니다. 'SessionId'와'QuestionId' 두 필드의 값을 확인하십시오. –

답변

0
$img = 'ImageFiles/'.$_FILES['fileImage']['name']; 

$insert->bind_param("s",$img); 

사용이 대신

$insert->bind_param("s",$img); 

//Assign the variable 
$img = 'ImageFiles/'.$_FILES['fileImage']['name']; 
관련 문제