我有一个应用程序,你可以查看这里:APPLICATION数据未插入到数据库表
请按照下面的步骤,以便使用正确的应用程序:在Add Question
按钮
单击两次追加下表中的2个表格行。
这两个表行都会有自己的文件输入。在这两个文件输入上传一个视频文件(我建议一个非常小的视频上传速度快)。您将不得不一次性上传视频文件
您将看到每次上传文件时,在表格下方都会显示文本输入,文本输入中的值是来自数据库的视频ID为每个上传的视频文件关联。
因此,举例来说,如果我的视频表目前看起来是这样的:
视频表:
VideoId (auto PK) VideoFiles
4 Files/video1.mp4
如果我上传2个视频文件(video5.mp4
和video6.mp4
)和文本输入状态分别为5
和6
,则表示Video
表现在看起来像是在文件上传后显示:
视频表:
VideoId (auto PK) VideoFiles
4 Files/video1.mp4
5 Files/video5.mp4
6 Files/video6.mp4
现在用于显示的文本输入代码如下:
Jquery的当上载完成,并生成文本输入:
function stopVideoUpload(success, videoID, videofilename){
var result = '';
if (success == 1){
result = '<span class="videomsg'+videocounter+'">The file was uploaded successfully</span>';
$('.hiddenvid').append('<input type="text" name="vidid[]" id="'+videoID+'" value="' + videoID + '" />');
}
$(sourceVideoForm).find('.videof1_upload_process').hide();
$(sourceVideoForm).find('.videomsg').html(result);
$(sourceVideoForm).find('.videof1_upload_form').show();
return true;
}
股利标记存储文本输入的位置:
<div class="hiddenvid"><!-- All uploaded video file ids go here --></div>
现在问题在于,我想在数据库中存储哪个问题包含哪些视频。为此,我会将问题编号存储在Question
表中,并为其提供QuestionId
,并且想要从Video
表中检索VideoId
视频。所以,下面是数据库中的表应该是什么提交和插入您的视频文件导入到数据库时,如:
问表:
QuestionId (auto PK) QuestionNo
25 1
26 2
Video_Question表:
VideoQuestionId (PK auto) VideoId QuestionId
7 5 25
8 6 26
的我遇到的问题是我努力插入Video_Question
表的数据。插入到Question
表是好的,但我想要做的是检索最后QuestionId
提交和每个QuestionId
,检索任何VideoId
属于该QuestionId
并将其插入Video_Question
表?
下面是我的尝试,但没有插入Video Question
表,它给我的:
Notice: Undefined offset: 0 in .... on line 305 error
我如何解决这个错误,并得到了Video_Question
的INSERT工作?
下面是插入的代码(我评论过行号notce出现的地方):
// Prepare your statements ahead of time
$questionsql = "INSERT INTO Question (QuestionNo)
VALUES (?)";
if (!$insert = $mysqli->prepare($questionsql)) {
// Handle errors with prepare operation here
echo __LINE__.': '.$mysqli->error;
}
$videoquestionsql = "INSERT INTO Video_Question (VideoId, QuestionId)
VALUES (?, ?)";
if (!$insertvideoquestion = $mysqli->prepare($videoquestionsql)) {
// Handle errors with prepare operation here
echo __LINE__.': '.$mysqli->error;
}
$c = count($_POST['numQuestion']);
$question_ids = array();
for($i = 0; $i < $c; $i++)
{
$questionNo = $_POST['numQuestion'][$i];
$insert->bind_param("i", $questionNo);
$insert->execute();
if ($insert->errno)
{
// Handle query error here
echo __LINE__.': '.$insert->error;
break 3;
}
$questionId = $mysqli->insert_id;
$question_ids[$questionNo] = $questionId;
}
$vidresults = $_POST['vidid'];
foreach($vidresults as $vidid => $vidvalue)
{
$video = $vidvalue;
$vidquesid = $question_ids[$vidid];
foreach($vidvalue as $video)
{
$insertvideoquestion->bind_param("ii",$video, $vidquesid);
$insertvideoquestion->execute();
if ($insertvideoquestion->errno) {
// Handle query error here
echo __LINE__.': '.$insertvideoquestion->error;
break 4;
}
}
}
通过执行以下操作var_dumps:
var_dump($question_ids);
var_dump($vidid);
我得到这些结果:
array(2) {
[1]=> int(159)
[2]=> int(160)
} int(1)
更新:
我不明白的是,低于该代码是非常相似的作品,但如何走到这一步的工作和mysqli的代码,我有视频不起作用:
$results = $_POST['value'];
foreach($results as $id => $value)
{
$answer = $value;
$quesid = $question_ids[$id];
foreach($value as $answer)
{
$insertanswer->bind_param("is", $quesid, $answer);
$insertanswer->execute();
if ($insertanswer->errno) {
// Handle query error here
echo __LINE__.': '.$insertanswer->error;
break 5;
}
}
}
的Jquery:
var $this, i = 0,
$row, $cell;
$('#optionAndAnswer .answers').each(function() {
$this = $(this);
if (i % 6 == 0) {
$row = $("<tr/>").appendTo($answer);
$cell = $("<td/>").appendTo($row);
}
var $newBtn = $(("<input class='answerBtnsRow answers' type='button' style='display:%s;' onclick='btnclick(this, " + gQuestionIndex + ");' />")
.replace('%s', $this.is(':visible') ? 'inline-block' : 'none')).attr('name', "value[" + gQuestionIndex + "][]")
.attr('value', $this.val()).attr('class', $this.attr('class')).attr('id', $this.attr('id') + 'Row');
$newBtn.appendTo($cell);
i++;
});
本来会喜欢JSFiddle的。 – Srinivas
你可以发布标记请 –
@ user1881090 HTML :) –