2

我正在尝试上传多个文件,然后在 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');";
    }
}

注意所有文件都上传成功

4

1 回答 1

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 个文件。loop 被执行 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
    }
}
于 2013-04-09T17:18:13.467 回答