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