我有一个jsfiddle here,用户可以在textarea中添加问题并在下面添加问题。现在,当用户添加问题时,它会在下面的表格中添加问题,但它也会添加包含文件输入的列。用户可以使用此输入选择图像文件。
现在我还没有在Jsfiddle中包含一个提交按钮,但是当用户提交表单时,它会将用户带到create_session.php页面,但我在下面有一个AJAX,它将发布到insertQuestion.php中背景。
function submitform()
{
var fieldvalue = $("#QandA").val();
$.post("insertQuestion.php", $("#QandA").serialize() ,function(data){
var QandAO = document.getElementById("QandA");
QandAO.submit();
});
alert("Your Details for this Session has been submitted");
}
现在在insertQuestion.php中,它做了两件事,首先它应该从文件输入字段上传所有文件,它应该将表单中的所有值都插入到数据库中。
但有两个问题:
问题1:
即使我正在上传正确的文件类型,它仍然回显我有一个'无效文件'。为什么要这样做以及如何修复它以使其不响应有效文件的“无效文件”。
问题2:
在INSERT VALUES代码中,即使从文件输入中选择了文件位置,它仍会显示“ImageId”的空白值。为什么它一直在推迟空白值以及如何解决?
以下是我目前看到的INSERT VALUES示例:
INSERT INTO Question (QuestionContent, ImageId) VALUES ('What is my Name?',''), ('What is my Age','')
以下是insertQuestion.php中的完整代码:
<?php
session_start();
if ((($_FILES["fileImage"]["type"] == "image/gif")
|| ($_FILES["fileImage"]["type"] == "image/jpeg")
|| ($_FILES["fileImage"]["type"] == "image/pjpeg")
|| ($_FILES["fileImage"]["type"] == "image/jpg")
|| ($_FILES["fileImage"]["type"] == "image/png")
|| ($_FILES["fileImage"]["type"] == "image/tif")))
{
if ($_FILES["fileImage"]["error"] > 0)
{
echo "Return Code: " . $_FILES["fileImage"]["error"] . "<br />";
}
else
{
echo "Upload: " . $_FILES["fileImage"]["name"] . "<br />";
echo "Type: " . $_FILES["fileImage"]["type"] . "<br />";
echo "Size: " . ($_FILES["fileImage"]["size"] / 1024) . " Kb<br />";
echo "Temp fileImage: " . $_FILES["fileImage"]["tmp_name"] . "<br />";
if (file_exists("uploadimages/" . $_FILES["fileImage"]["name"]))
{
echo $_FILES["fileImage"]["name"] . " already exists. ";
}
else
{
move_uploaded_file($_FILES["fileImage"]["tmp_name"],
"uploadimages/" . $_FILES["fileImage"]["name"]);
echo "Stored in: " . "uploadimages/" . $_FILES["fileImage"]["name"];
}
}
}
else
{
echo "Invalid file";
}
$username="xxx";
$password="xxx";
$database="xxx";
mysql_connect('localhost',$username,$password);
mysql_select_db($database) or die( "Unable to select database");
$i = 0;
$c = count($_POST['questionText']);
$insertquestion = array();
for($i = 0; $i < $c; $i++ ){
$imagequery = "SELECT ImageId FROM Image WHERE (ImageFile = '". mysql_real_escape_string($_POST['fileImage'])."')";
$imagers = mysql_query($imagequery);
$imagerecord = mysql_fetch_array($imagers);
$imageid = $imagerecord['ImageId'];
$insertquestion[] = "'".
mysql_real_escape_string( $_POST['questionText'][$i] ) ."','".
mysql_real_escape_string( $imageid [$i] ) ."'";
}
$questionsql = "INSERT INTO Question (SessionId, QuestionId, QuestionContent, QuestionMarks, OptionId, ImageId)
VALUES (" . implode('), (', $insertquestion) . ")";
echo($questionsql);
mysql_close();
?>
答案 0 :(得分:0)
问题1: 由于您要将[]添加到上传文件名中,因此$ _FILES [“fileImage”]是一个文件数组,因此[“type”]仅存在于数组的每个元素,因此if失败。
的error_reporting(E_ALL); 帮助抵御这种错误。
问题2是问题1但是使用$ _POST