我有一个表单,使用JQuery
在选择文件后立即自动提交表单。
图像已上传并正确显示,但表中未插入任何数据。
我已经尝试删除了“如果isset'正确地测试SQL
插入数据并且确实如此,但显然需要if语句,因此每次加载页面时都不会向表中插入数据。
我认为问题是因为我删除了表单提交按钮,但是如果我在表单中将其添加回来,则在选择图像后不再自动提交。
$('#file').change(function() {
$('#target').submit();
});
if(isset($_FILES['file'])){
DB::query('INSERT INTO images VALUES(\'\', :image, :img_id)',array(':image'=>$image, ':img_id'=>$userid));
}
<form id="target" action="upload.php" name="target" method="POST" enctype="multipart/form-data">
<img src="uploads/profileu<?=$userid?>u.jpg?=<?php echo rand() . "\n";?>">
<label class="btn btn-primary glyphicon glyphicon-pencil">
<input type="file" id="file" name="file" onchange="form.submit()" style="display:none">
</label>
</form>
我还应该注意图像上传到本地文件夹并显示(正常工作),而SQL只是将1或0插入数据库(用户有图像或没有图像)
答案 0 :(得分:1)
潜在的问题是我的表单action="upload.php"
是用于上传图片的PHP
全部存储的地方。这意味着我必须将if(isset)
语句移到该页面的顶部而不是表单所在的页面。现在它完美无需提交按钮。
答案 1 :(得分:0)
您必须使用$_FILES['fileName']
而不是$_FILE
要检查文件是否已成功上传,请使用。
if($_FILES["fileName"]["error"] == 0){ ... }
除此之外,您还可以检查上传的文件是否为图像,您可以将其检查为:
if(getimagesize($_FILES["fileName"]["tmp_name"])){
//Its an Image
}
else
{
//Invalid Image
}
答案 2 :(得分:0)
因为您要插入$image
和$userid
,所以应检查是否设置了这些变量。
像这样:
if (isset($image) && isset($userid)) {
// insertion code
}