多个文件上传sql / php

时间:2013-04-09 16:41:55

标签: php mysql

我正在尝试上传多个文件,然后在mysql db中插入文件名 我的问题是插入名称只存储最后一个文件名

for($i=0;$i<count($_FILES['file']['size']);$i++){
    if(strstr($_FILES['file']['type'][$i], 'image')!==false){
        $file = 'uploads/'.time().' - '.$_FILES['file']['name'][$i];
        move_uploaded_file($_FILES['file']['tmp_name'][$i],$file);
        $na=$_FILES['file']['name'][$i];

        $sql="INSERT INTO img (img_name) VALUES ('$na');";
    }
}

请注意所有文件都已成功上传

1 个答案:

答案 0 :(得分:1)

for($i=0;$i<count($_FILES['file']['size']);$i++){
    if(strstr($_FILES['file']['type'][$i], 'image')!==false){
        $file = 'uploads/'.time().' - '.$_FILES['file']['name'][$i];
        move_uploaded_file($_FILES['file']['tmp_name'][$i],$file);
        $na=$_FILES['file']['name'][$i];

        $sql="INSERT INTO img (img_name) VALUES ('$na');";
    }
}

你只是创建一个字符串并存储一些值。你没有执行它.. 假设$ str =“apple”;它只是一个宣言。我认为你已经在循环后执行了查询。假设你有10个文件。循环执行10次,$ na具有插入的最后一个文件名。

Soln:在for循环中移动执行查询。

for($i=0;$i<count($_FILES['file']['size']);$i++){
    if(strstr($_FILES['file']['type'][$i], 'image')!==false){
        $file = 'uploads/'.time().' - '.$_FILES['file']['name'][$i];
        move_uploaded_file($_FILES['file']['tmp_name'][$i],$file);
        $na=$_FILES['file']['name'][$i];

        $sql="INSERT INTO img (img_name) VALUES ('$na');";
        mysql_query($con,$sql); // note: $con is your connection string
    }
}