2017-03-27 3 views
0

現在、配列を使用して複数の個別ファイルをフォルダに保存できます。今度は、フォルダからデータベースに個々のファイルパスを追加したいと思います。配列をデータベースにアップロードするファイルのパス

フォルダにアップロードされた各ファイルの個々のパスはどのように取得できますか?

そこから個別のパスをデータベースに挿入する方法はありますか?

HTML:

<!DOCTYPE html> 
 
<html> 
 
<head> 
 
<meta charset="UTF-8"> 
 
</head> 
 
<body> 
 
<form action="upload.php" method="post" enctype="multipart/form-data"> 
 
    <p><input type="file" name="file_array[]"></p> 
 
    <p><input type="file" name="file_array[]"></p> 
 
    <p><input type="file" name="file_array[]"></p> 
 
    <input type="submit" value="Upload all files"> 
 
</form> 
 
</body> 
 
</html>

PHP:

<?php 
 

 
if(isset($_FILES['file_array'])){ 
 
    $name_array = $_FILES['file_array']['name']; 
 
    $tmp_name_array = $_FILES['file_array']['tmp_name']; 
 
    $type_array = $_FILES['file_array']['type']; 
 
    $size_array = $_FILES['file_array']['size']; 
 
    $error_array = $_FILES['file_array']['error']; 
 
\t 
 
\t $imageFileType = pathinfo($path,PATHINFO_EXTENSION); 
 
\t $path = 'uploads/' . $_FILES['my-file']['name']; 
 
\t 
 
    for($i = 0; $i < count($tmp_name_array); $i++){ 
 
     if(move_uploaded_file($tmp_name_array[$i], "uploads/".$name_array[$i])){ 
 
      echo $name_array[$i]." upload is complete<br>"; 
 
     } else { 
 
      echo "move_uploaded_file function failed for ".$name_array[$i]."<br>"; 
 
     } 
 
    } 
 
} 
 

 

 
$conn_info = "host=d port= dbname= user= password="; 
 
     $dbconn = pg_connect($conn_info) 
 
     or die('could not connect:' . pg_last_error()); 
 

 
     echo"<br/>sucessful connection"; 
 

 

 
     $query = "INSERT INTO photo2 (path) VALUES ('".$path."') ;"; 
 

 
     $result = pg_query($dbconn, $query); 
 
     if (!$result) { 
 
     $errormessage = pg_last_error(); 
 
     echo "<br/> error with query: " . $errormessage; 
 
     exit(); 
 
     } 
 

 
     echo "<br/> file uploaded to PostgreSQL"; 
 

 
     pg_close(); 
 

 
?>

+0

パスを追加し、ループのためにクエリを挿入します。 –

+0

私には解決策があります。コードの配置を変更するだけで済みます。最初に$ conn_info変数を設定してから、forループ内でクエリを実行してください – Jayanta

+0

もう1つのことは、あなたのパスにファイル拡張子を設定していません – Jayanta

答えて

0

ループのためにパスを取得します。また、挿入クエリをループで記述します。 データベース接続コードはforループの前にある必要があります。

for($i = 0; $i < count($tmp_name_array); $i++){ 
    if(move_uploaded_file($tmp_name_array[$i], "uploads/".$name_array[$i])){ 
     // get path 
     $path = "uploads/".$name_array[$i]; 
     echo $name_array[$i]." upload is complete<br>"; 
     // Insert query comes here 
      $query = "INSERT INTO photo2 (path) VALUES ('".$path."') ;"; 
      pg_query($dbconn, $query); 
    } else { 
     echo "move_uploaded_file function failed for ".$name_array[$i]."<br>"; 
    } 
} 
0

必要なコードがすべてあります。私はそれがあなたを助けるかもしれないと思います。

<?php 
$conn_info = "host=d port= dbname= user= password="; 
$dbconn = pg_connect($conn_info) or die('could not connect:' . pg_last_error()); 

echo "<br/>sucessful connection"; 

if(isset($_FILES['file_array'])){ 
    $name_array = $_FILES['file_array']['name']; 
    $tmp_name_array = $_FILES['file_array']['tmp_name']; 
    $type_array = $_FILES['file_array']['type']; 
    $size_array = $_FILES['file_array']['size']; 
    $error_array = $_FILES['file_array']['error']; 

    // you don't need this lines of code 
    // $imageFileType = pathinfo($path, PATHINFO_EXTENSION); 
    // $path = 'uploads/' . $_FILES['my-file']['name'] . '.' . $imageFileType; 

    for($i=0;$i<count($tmp_name_array);$i++) { 
     $path = "uploads/" . $name_array[$i]; 

     if(move_uploaded_file($tmp_name_array[$i], $path)){ 
      $query = "INSERT INTO photo2 (path) VALUES ('".$path."');"; 
      $result = pg_query($dbconn, $query); 

      if (!$result) { 
       $errormessage = pg_last_error(); 
       echo "<br/> error with query: " . $errormessage; 

       exit(); 
      } else { 
       echo $name_array[$i]." upload is complete<br>"; 
      } 
     } else { 
      echo "move_uploaded_file function failed for ".$name_array[$i]."<br>"; 
     } 
    } 
} 

echo "<br/> file uploaded to PostgreSQL"; 
pg_close(); 

?> 
関連する問題