Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/10.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
Php For循环只插入一个文件名 for($i=0;$i_Php_Database_File_Insert - Fatal编程技术网

Php For循环只插入一个文件名 for($i=0;$i

Php For循环只插入一个文件名 for($i=0;$i,php,database,file,insert,Php,Database,File,Insert,由于某些原因,只需上传一个选定文件,并在数据库中只插入一个文件名。如果有更好的方法通过这个循环来捕获所有这些 上面有3条评论,包括我的:基本上他们都在说同样的话。您没有为我们提供足够的信息来帮助您诊断问题。因此,我建议采取调试的第一步: 检查变量的值 您可以通过打印变量,如$文件(查看服务器正在获取哪些文件的信息)和简单的echo语句来检查保存到哪些目录文件。尝试添加一个echo$uploaddir定义变量以确保其符合预期后 另外,检查$uploadsNeeded变量;您没有显示如何或在何处定义

由于某些原因,只需上传一个选定文件,并在数据库中只插入一个文件名。如果有更好的方法通过这个循环来捕获所有这些

上面有3条评论,包括我的:基本上他们都在说同样的话。您没有为我们提供足够的信息来帮助您诊断问题。因此,我建议采取调试的第一步:

检查变量的值 您可以通过打印变量,如$文件(查看服务器正在获取哪些文件的信息)和简单的echo语句来检查保存到哪些目录文件。尝试添加一个
echo$uploaddir定义变量以确保其符合预期后


另外,检查$uploadsNeeded变量;您没有显示如何或在何处定义它,如果它不是您期望的数字,那么这可能就是您的问题所在。

从您提供给我们的小信息来看,我猜您的问题在于以下代码:

$\u文件['uploadFile.$i]

试试这个,看看它是否有效:

for($i = 0; $i < $uploadsNeeded; $i++){ 

 $file_name = $_FILES['uploadFile'. $i]['name']; 
 $file_name = stripslashes($file_name); 
 $file_name = str_replace("'","",$file_name);
 $uploaddir = "media/files/".$_FILES['uploadFile'. $i]['name']; 
 $copy = move_uploaded_file($_FILES['uploadFile'. $i]['tmp_name'], $uploaddir); 
 if($copy){ 
      $res = db_res("INSERT INTO `atest` SET `filename`='$file_name', `article`='$ArticleUri'");
  } 
}
以下是您需要的
Upload()
函数:

$filesUploaded = Upload('uploadFile', './media/files/');

foreach ($filesUploaded as $fileUploaded)
{
    $res = db_res("INSERT INTO `atest` SET `filename` = '" . $fileUploaded . "', `article` = '$ArticleUri';");
}
打印
$\u文件
数组对于我们查找代码中可能存在的错误非常有用:

function Upload($source, $destination)
{
    $result = array();

    if (array_key_exists($source, $_FILES) === true)
    {
        if (is_array($_FILES[$source]['error']) === true)
        {
            foreach ($_FILES[$source]['error'] as $key => $value)
            {
                if ($value == UPLOAD_ERR_OK)
                {
                    $filename = str_replace("'", '', stripslashes(basename($_FILES[$source]['name'][$key])));

                    if (move_uploaded_file($_FILES[$source]['tmp_name'][$key], $destination . $filename) === true)
                    {
                        $result[] = $destination . $filename;
                    }
                }
            }
        }

        else
        {
            $filename = str_replace("'", '', stripslashes(basename($_FILES[$source]['name'])));

            if (move_uploaded_file($_FILES[$source]['tmp_name'], $destination . $filename) === true)
            {
                $result[] = $destination . $filename;
            }
        }
    }

    return $result;
}
echo';
打印(美元文件);
回声';


PS:别忘了您的SQL查询易受攻击

也许你应该检查$uploadsNeededso的值,tmp\U的名称是什么??其他地方都看不到,谢谢你的帮助。我完全找错人了。
echo '<pre>';
print_r($_FILES);
echo '</pre>';