PHP上传多个文件并将其路径保存到DB中的单个行中

时间:2016-06-24 21:54:01

标签: php sql postgresql for-loop multiple-files

我一直在环顾四周,并没有找到符合我需求的解决方案。 所以让我们切入追逐。

SCENARIO:用户将填写一些文本表单,这些表单的输入将存储到数据库表中(文本输入正常工作并存储到数据库中),用户将以相同的形式上传7个文件和文件的路径将存储在不同列中的同一个表中,例如image1 image2 image3等,但是在同一行中,所以当需要该行的id时,也将检索文件路径但是我无法构建查询到将路径插入数据库,香港专业教育学院管理商店只有一个文件,并将其路径存储到数据库,但我正在努力与多个文件,我只是不知道如何检查for循环是否已完成以及如何构建查询以插入所有upladed文件的路径分别在各自的列中。

服务器正在运行PHP和postgreSQL

提前感谢,希望你能帮助我!

  <?php
  include '../include/dbase.php';
  $result = '';
  if (isset($_FILES['upload'])) {
   $nombre = $_FILES['upload']['name'];
   $ntemporal = $_FILES['upload']['tmp_name'];
   $tipo = $_FILES['upload']['type'];
   $tamaño = $_FILES['upload']['size'];
   $error = $_FILES['upload']['error'];
   $file_name_all = '';
    for($i=0; $i<count($_FILES['upload']['name']); $i++)
     {
        $tmpFilePath = $_FILES['upload']['tmp_name'][$i];
           if ($tmpFilePath != "")
             {
               $path = "../imagenes/propiedades/";
               $name = $_FILES['upload']['name'][$i];
               $size = $_FILES['upload']['size'][$i];

               list($txt, $ext) = explode(".", $name);
               $file= time().substr(str_replace(" ", "_", $txt), 0);
               $info = pathinfo($file);
               $filename = $file.".".$ext;
               if(move_uploaded_file($_FILES['upload'['tmp_name'][$i],   $path.$filename))
               {
                  //my guess is an if check here to see if for 
         loop has finished all the uploads, and if returns true a try and 
      catch with the sql query to upload  only the path of each file the 
       row containing all other user input text.
               }
         }
           }
           }
          ?>

2 个答案:

答案 0 :(得分:1)

最好将文件保存在files / $ id_user / ..等目录以及数据库中的名称中。

您可以为文件制作表格; 例如,带有id_user + file_name的表文件。

如果您希望所有人都在同一个表中,您可以将所有文件的名称用逗号分隔;或者选择它们并爆炸后将它们放在数组中..

在您的代码中,最好使用&#39;而且#34;因为php会尝试在&#34;中找到变量。 &#34; ..并且没有时间......

$filename = $file.'.'.$ext; $filename = $file.".".$ext;;

如果你写:

$test = 'hello';
echo 'i tell you $test'; => i tell you $test
echo "i tell you $test"; => i tell you hello

答案 1 :(得分:0)

在你的表格中,创建列file_0,file_1,.... 之后,你可以像这样保存在你的桌子中:

if(move_uploaded_file($_FILES['upload'['tmp_name'][$i],   $path.$filename))
           {
          $sql = "UPDATE `your_table` SET `file_$i` = '$path.$filname' WHERE `id` = '$id_user'";
//execute your $sql
           }