Mysql 是否将隐藏文件输入的值插入数据库?
我想将隐藏文件输入的值插入数据库,但不确定如何插入。我的代码只是不断向数据库中插入空白值,但我想插入正在上载的文件名。这是我的代码:Mysql 是否将隐藏文件输入的值插入数据库?,mysql,sql,database,phpmyadmin,Mysql,Sql,Database,Phpmyadmin,我想将隐藏文件输入的值插入数据库,但不确定如何插入。我的代码只是不断向数据库中插入空白值,但我想插入正在上载的文件名。这是我的代码: <form action="handler.php" method="post" enctype="multipart/form-data"> <div id="bd1" class="border"> <input id="inp1" class="imginp" type="file" name="img1
<form action="handler.php" method="post" enctype="multipart/form-data">
<div id="bd1" class="border">
<input id="inp1" class="imginp" type="file" name="img1" hidden>
<img src="https://img.icons8.com/wired/64/000000/add-image.png">
</div>
<input type="submit" name="submit">
</form>
<script>
for (let a = 1; a < 3; a++) {
$("#bd"+a).click(function(e) {
$(this).children(".imginp").click()
});
$('#inp'+a).click(function (e) {
e.stopPropagation();
});
$('#inp'+a).on('change', function(e){
var files = e.target.files;
$.each(files, function(i, file){
var reader = new FileReader();
reader.readAsDataURL(file);
reader.onload = function(e){
template =
'<div class="border">'+
'<input id="inp'+a+'" class="imginp" type="file" name="img'+a+'">'+
'<img class="blah" src="'+e.target.result+'">'+
'</div>';
$('#bd'+a).replaceWith(template);
};
});
});
}
</script>
if (isset($_POST['submit'])) {
$img1 = $_FILES['img1']['name'];
$img1targ = "images/".basename($_FILES['img1']['name']);
$img1muf = move_uploaded_file($_FILES['img1']['tmp_name'], $img1targ);
$stmt = $conn->prepare("INSERT INTO images (img1) VALUES (?)");
$stmt->bind_param("s", $img1);
$stmt->execute();
$stmt->close();
}
for(设a=1;a<3;a++){
$(“#bd”+a)。单击(函数(e){
$(this.children(“.imginp”)。单击()
});
$('#inp'+a)。单击(函数(e){
e、 停止传播();
});
$('#inp'+a).on('change',function(e){
var files=e.target.files;
$.each(文件、函数(i、文件){
var reader=new FileReader();
reader.readAsDataURL(文件);
reader.onload=函数(e){
模板=
''+
''+
''+
'';
$('#bd'+a).replacetwith(模板);
};
});
});
}
如果(isset($_POST['submit'])){
$img1=$_文件['img1']['name'];
$img1targ=“images/”.basename($_文件['img1']['name']);
$img1muf=移动上传的文件($\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\$img1targ);
$stmt=$conn->prepare(“插入图像(img1)值(?)”;
$stmt->bind_参数(“s”,$img1);
$stmt->execute();
$stmt->close();
}
您正在使用javascript动态地重写输入字段,实际上是在提交之前将其删除
文件输入字段由浏览器控制。如果您在Chrome中调试(点击F12,然后右键单击并检查),您将注意到“文件”类型的输入字段实际上从未更改。没有值字段,没有任何内容
请看这篇精彩的帖子:
我相信这接近你想要做的
另外,关于调试,您需要执行以下操作:
if (isset($_POST['submit'])) {
print "<pre>" . print_r($_POST,TRUE) . "</pre>"; exit;
$img1 = $_FILES['img1']['name'];
$img1targ = "images/".basename($_FILES['img1']['name']);
$img1muf = move_uploaded_file($_FILES['img1']['tmp_name'], $img1targ);
$stmt = $conn->prepare("INSERT INTO images (img1) VALUES (?)");
$stmt->bind_param("s", $img1);
$stmt->execute();
$stmt->close();
}
有很多方法可以做到这一点 1隐藏输入
使用var\u dump
进行调试,以确保您实际获取了正确的属性,而不是假设您获取了该属性。@tadman在插入任何内容时,我应该使用var\u dump做什么,以确保填充了该值。从数据库中的空白条目返回到该操作之前的立即操作,并一直到这个值的来源,以确保它正确地传递。@ TADMAN,我这样做,得到这个:<代码>字符串(0)“”。我认为这可能是一个html或javascript问题,或者是我的代码中缺少的东西。追溯到它的来源等等。使用浏览器中的Web inspector功能查看发送了哪些参数(如果有)。使用JavaScript调试器和控制台.log
首先确保正确收集它们。不过,我认为不能有两种类型属性。。我相信hiddenYeah不需要类型属性,我知道它与我的javascript有关。我删除了js代码的下半部分,并能够以这种方式将文件名插入到数据库中,但这花费了我最后的js代码,我仍然需要它。我现在只需要找出如何使它工作,这样它就不会覆盖我的输入文件名-感谢您进一步指出这一点。
Array
(
[submit] => Submit
)