- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我想将数据插入到 Image_Question
表中。但它不会在 Image_Question
表中执行插入。
我收到两个错误:
这是您可以使用的应用程序:Application
要使用应用程序查看发生了什么,请执行以下操作:
点击 Add Question
按钮两次以附加两个文件输入
现在一次上传一个文件,但要这样做。在第 1 行的文件输入中上传一个文件,然后在第 2 行上传一个文件,然后再次在第 1 行上传文件,最后在第 2 行上传文件。
下面是mysqli代码:
// 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;
}
$imagequestionsql = "INSERT INTO Image_Question (ImageId, QuestionId)
VALUES (?, ?)";
if (!$insertimagequestion = $mysqli->prepare($imagequestionsql)) {
// Handle errors with prepare operation here
echo __LINE__.': '.$mysqli->error;
}
//make sure both prepared statements succeeded before proceeding
if( $insert && $insertimagequestion) {
$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 1;
}
$questionId = $mysqli->insert_id;
$question_ids[$questionNo] = $questionId;
}
$imgresults = $_POST['imgid'];
foreach($imgresults as $imgid => $imgvalue) {
$image = $imgvalue;
$imgquesid = $question_ids[$imgid]; //LINE 305 where error is
foreach($imgvalue as $image) {
$insertimagequestion->bind_param("ii",$image, $imgquesid);
$insertimagequestion->execute();
if ($insertimagequestion->errno) {
// Handle query error here
echo __LINE__.': '.$insertimagequestion->error;
break 2;
}
}
}
$insertimagequestion->close();
$insert->close();
}
?>
下面是设置演示的代码:
function GetFormImageCount(){
return $('.imageuploadform').length + 1;
}
var qnum = 1;
var qremain = 5;
function insertQuestion(form) {
if (qnum > 5)
return;
var $tbody = $('#qandatbl_onthefly > tbody');
var $tr = $("<tr class='optionAndAnswer' align='center'>");
var $qid = $("<td width='5%' class='qid'></td>").text(qnum);
var $image = $("<td width='17%' class='image'></td>");
$('.num_questions').each( function() {
var $this = $(this);
var $questionNumber = $("<input type='hidden' class='num_questionsRow'>").attr('name',$this.attr('name')+"[]").attr('value',$this.val());
$qid.append($questionNumber);
++qnum;
$(".questionNum").text(qnum);
$(".num_questions").val(qnum);
--qremain;
$(".questionRemain").text(qremain);
});
var $fileImage = $("<form action='imageupload.php' method='post' enctype='multipart/form-data' target='upload_target_image' onsubmit='return imageClickHandler(this);' class='imageuploadform' >" +
"<p class='imagef1_upload_form'><label>" +
"Image File: <input name='fileImage' type='file' class='fileImage' /></label><br/><br/><label class='imagelbl'>" +
"<input type='submit' name='submitImageBtn' class='sbtnimage' value='Upload' /></label>" +
"<p class='imagef1_upload_process'>Loading...<br/><img src='Images/loader.gif' /></p>" +
"<input type='hidden' class='numimage' name='numimage' value='" + GetFormImageCount() + "' />" +
"</p><p class='imagemsg'></p><p class='listImage'></p>" +
"<iframe class='upload_target_image' name='upload_target_image' src='/' style='width:0px;height:0px;border:0px;solid;#fff;'></iframe></form>");
$image.append($fileImage);
$tr.append($qid);
$tr.append($image);
$tbody.append($tr);
}
function imageValidation(imageuploadform) {
var val = $(imageuploadform).find(".fileImage").val();
switch(val.substring(val.lastIndexOf('.') + 1).toLowerCase()){
case 'gif':
case 'jpg':
case 'jpeg':
case 'pjpeg':
case 'png':
return true;
case '':
$(imageuploadform).find(".fileImage").val();
alert("To upload an image, please select an Image File");
return false;
default:
alert("To upload an image, please select an Image File");
return false;
}
return false;
}
function htmlEncode(value) { return $('<div/>').text(value).html(); }
function startImageUpload(imageuploadform){
$(imageuploadform).find('.imagef1_upload_process').show()
$(imageuploadform).find('.imagef1_upload_form').hide();
$(imageuploadform).find('.imagemsg').hide();
sourceImageForm = imageuploadform;
return true;
}
var imagecounter = 0;
function stopImageUpload(success, imageID, imagefilename) {
var result = '';
imagecounter++;
if (success == 1){
result = '<span class="imagemsg'+imagecounter+'">The file was uploaded successfully</span>';
$('.hiddenimg').eq(window.lastUploadImageIndex).append('<input type="text" name="imgid[]" id="'+imageID+'" value="' + imageID + '" />');
$('.listImage').eq(window.lastUploadImageIndex).append('<div>' + htmlEncode(imagefilename) + '<button type="button" class="deletefileimage" data-imageID="'+imageID+'" data-image_file_name="' + imagefilename + '" value="'+imageID+'">Remove</button><br/><hr/></div>');
}
$(sourceImageForm).find('.imagef1_upload_process').hide();
$(sourceImageForm).find('.imagemsg').html(result);
$(sourceImageForm).find('.imagemsg').show();
$(sourceImageForm).find(".fileImage").replaceWith("<input type='file' class='fileImage' name='fileImage' />");
$(sourceImageForm).find('.imagef1_upload_form').show();
var _imagecounter = imagecounter;
$('.listImage').eq(window.lastUploadImageIndex).find(".deletefileimage").on("click", function(event) {
jQuery.ajax("deleteimage.php?imagefilename=" + $(this).attr('data-image_file_name')).done(function(data) {
$(".imagemsg" + _imagecounter).html(data);
});
var buttonid = $(this).attr('value');
$(this).parent().remove();
$("#"+ buttonid +"").remove();
});
return true;
}
function imageClickHandler(imageuploadform){
if(imageValidation(imageuploadform)){
window.lastUploadImageIndex = $('.imageuploadform').index(imageuploadform);
return startImageUpload(imageuploadform);
}
return false;
}
</script>
</head>
<body>
<form id="QandA" action="insertQuestion.php" method="post">
<table id="question">
<tr>
<th colspan="2">
Question Number <span class="questionNum">1</span>
<input type="hidden" class="num_questions" name="numQuestion" value="1">
</th>
</tr>
</table>
<table id="questionBtn" align="center">
<tr>
<th>
<input id="addQuestionBtn" name="addQuestion" type="button" value="Add Question" onClick="insertQuestion(this.form)" />
</th>
</tr>
</table>
</div><hr/><!-- This Divide close tag has no open tag!-->
<table id="qandatbl" align="center" cellpadding="0" cellspacing="0" border="0">
<thead>
<tr>
<th width="5%" class="qid">Question Number</th>
<th width="17%" class="image">Image</th>
</tr>
</thead>
</table>
<div id="qandatbl_onthefly_container">
<table id="qandatbl_onthefly" align="center" cellpadding="0" cellspacing="0" border="0">
<tbody>
</tbody>
</table>
</div>
<div class="hiddenimg"><!-- All uploaded image file ids go here --></div>
</form>
</body>
通过执行以下 var_dumps:
var_dump($question_ids);
var_dump($imgresults);
我得到这些结果:
array(2) {
[1]=> int(159)
[2]=> int(160)
}
array(2) {
[0]=> string(3) "129"
[1]=> string(3) "130"
}
奇怪的是 imgresult 的数字从 0 然后 1 开始,我也不知道为什么它是字符串,它应该是一个 int。但是,如果它来自输入,我是否将 bind_param i
或 s
称为 db 中的 int?
额外细节:
我没有得到的是在这个 mysqli 下面,我生成了一个类似的 mysqli 作为答案,奇怪的是它正确地插入,即使它像上面的 image_question 插入一样以 0 开头:
$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;
}
}
}
var_dump($result) 显示 1 个问题的先前 var 转储:
array(1) { //var_dump($question_ids);
[1]=> int(171)
} array(1) { //var_dump($imgresults);
[0]=> string(3) "130"
} array(1) {
[1]=> array(1) { //var_dump($results);
[0]=> string(1) "B" } }
最佳答案
我的回答不会针对特定问题,而是针对更广泛的主题。
这是关于您一般的工作方式。
你需要改变它。
看,您所有的问题都很重要 需要回答。并且变得更大。却得到更少的答案。
它会让你做绝望的事情——在问题、赏金、账户上作弊——但都是徒劳的。那是无路可走的路。
您需要改变您学习事物的方式以及您使用这个出色网站的方式。
了解他们正在使用的工具对任何人来说都非常重要。您必须自己编写代码,只有在真正解决问题时才寻求帮助。
因此,您将了解您的代码。这很重要 - 了解您的代码的作用。它的每一行。因此,您将能够自己解决问题并修复代码。
否则你注定要为每一个打字错误寻求帮助,就像在这种情况下一样。
此外,由于您无法深入挖掘问题的根源,您必须将大量代码与您的问题一起发布,这使得回答变得复杂。
您的问题中有三个独立的领域 - JavaScript、PHP 和 Mysql。而问题只属于其中一个。你必须学会将你的问题至少分离到这些领域的限制。
是 JS 从客户端发送了错误的(意外的)数据吗?好了,把所有PHP和Mysql代码都收起来,只剩下JS了。它将帮助 Stackoverflowers 甚至您自己调查问题。
这个数据好吗?你确定吗?打印出来并确保它正是您所期望的。
如果没问题 - 转到 PHP 部分(但不要忘记从问题中删除所有 JS)。
等等。
不要笼统地问你的问题,比如“它没有插入”,而是根据特定的数据流:“我期待这样的数据进入程序,但我有另一个。”
一旦开始使用它,您将不需要 Stackoverflow 来回答:您将能够将问题追溯到数据意外出错的地方。所以 - 你找到了错误的地方。
运行问题代码也很重要。并在您遇到问题的环境中运行它。
运行代码并检查实际结果比用眼睛看代码更有效率。
甚至有些情况只属于你的服务器而其他人不知道,导致他们根本无法回答你的问题。
此外,人类 不应该在头脑中运行 PHP 代码。它可以用于几行,但从某种程度上来说,它不可能在脑子里运行所有代码并找到错误。
这就是为什么运行您的代码并打印出所有值、函数结果、检查变量状态等并查找其中的不一致如此重要的原因。
当然,要使用这种技术,您必须了解哪些数据正确,哪些不正确。
这就是为什么从头开始编写代码并自行规划如此重要的原因。
如果是您决定,哪些数据应该来自 JS - 您可以判断它是好是坏。如果是其他人 - 你就陷入了死胡同,注定要再次询问,让事情变得更糟。
你需要打破这个恶性循环。
这就是为什么它如此重要 - 自己编写代码,而不是让别人为你做。
希望对你有所帮助,祝学习顺利。
关于php - 它不是将数据插入数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14554847/
初学者 android 问题。好的,我已经成功写入文件。例如。 //获取文件名 String filename = getResources().getString(R.string.filename
我已经将相同的图像保存到/data/data/mypackage/img/中,现在我想显示这个全屏,我曾尝试使用 ACTION_VIEW 来显示 android 标准程序,但它不是从/data/dat
我正在使用Xcode 9,Swift 4。 我正在尝试使用以下代码从URL在ImageView中显示图像: func getImageFromUrl(sourceUrl: String) -> UII
我的 Ubuntu 安装 genymotion 有问题。主要是我无法调试我的数据库,因为通过 eclipse 中的 DBMS 和 shell 中的 adb 我无法查看/data/文件夹的内容。没有显示
我正在尝试用 PHP 发布一些 JSON 数据。但是出了点问题。 这是我的 html -- {% for x in sets %}
我观察到两种方法的结果不同。为什么是这样?我知道 lm 上发生了什么,但无法弄清楚 tslm 上发生了什么。 > library(forecast) > set.seed(2) > tts lm(t
我不确定为什么会这样!我有一个由 spring data elasticsearch 和 spring data jpa 使用的类,但是当我尝试运行我的应用程序时出现错误。 Error creatin
在 this vega 图表,如果我下载并转换 flare-dependencies.json使用以下 jq 到 csv命令, jq -r '(map(keys) | add | unique) as
我正在提交一个项目,我必须在其中创建一个带有表的 mysql 数据库。一切都在我这边进行,所以我只想检查如何将我所有的压缩文件发送给使用不同计算机的人。基本上,我如何为另一台计算机创建我的数据库文件,
我有一个应用程序可以将文本文件写入内部存储。我想仔细看看我的电脑。 我运行了 Toast.makeText 来显示路径,它说:/数据/数据/我的包 但是当我转到 Android Studio 的 An
我喜欢使用 Genymotion 模拟器以如此出色的速度加载 Android。它有非常好的速度,但仍然有一些不稳定的性能。 如何从 Eclipse 中的文件资源管理器访问 Genymotion 模拟器
我需要更改 Silverlight 中文本框的格式。数据通过 MVVM 绑定(bind)。 例如,有一个 int 属性,我将 1 添加到 setter 中的值并调用 OnPropertyChanged
我想向 Youtube Data API 提出请求,但我不需要访问任何用户信息。我只想浏览公共(public)视频并根据搜索词显示视频。 我可以在未经授权的情况下这样做吗? 最佳答案 YouTube
我已经设置了一个 Twilio 应用程序,我想向人们发送更新,但我不想回复单个文本。我只是想让他们在有问题时打电话。我一切正常,但我想在发送文本时显示传入文本,以确保我不会错过任何问题。我正在使用 p
我有一个带有表单的网站(目前它是纯 HTML,但我们正在切换到 JQuery)。流程是这样的: 接受用户的输入 --- 5 个整数 通过 REST 调用网络服务 在服务器端运行一些计算...并生成一个
假设我们有一个名为 configuration.js 的文件,当我们查看内部时,我们会看到: 'use strict'; var profile = { "project": "%Projec
这部分是对 Previous Question 的扩展我的: 我现在可以从我的 CI Controller 成功返回 JSON 数据,它返回: {"results":[{"id":"1","Sourc
有什么有效的方法可以删除 ios 中 CBL 的所有文档存储?我对此有疑问,或者,如果有人知道如何从本质上使该应用程序像刚刚安装一样,那也会非常有帮助。我们正在努力确保我们的注销实际上将应用程序设置为
我有一个 Rails 应用程序,它与其他 Rails 应用程序通信以进行数据插入。我使用 jQuery $.post 方法进行数据插入。对于插入,我的其他 Rails 应用程序显示 200 OK。但在
我正在为服务于发布请求的 API 调用运行单元测试。我正在传递请求正文,并且必须将响应作为帐户数据返回。但我只收到断言错误 注意:数据是从 Azure 中获取的 spec.js const accou
我是一名优秀的程序员,十分优秀!