Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 是否将隐藏文件输入的值插入数据库?_Mysql_Sql_Database_Phpmyadmin - Fatal编程技术网

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
)