2017-05-30 42 views
0

您好,我有一個上傳文件並保存其路徑在數據庫中的代碼。現在我想改變它的路徑到它在數據庫中保存的相應id,也就是說我已經上傳了一張圖片,它的id在數據庫中是'4',它的文件路徑也應該是4.如果我上傳其他圖片並且如果它的id是5,那麼在它的文件路徑列中也應該有5,依此類推。我搜索了一段時間,但我無法找到正確的答案。請在這裏幫助我。 這裏是我的代碼需要更改文件路徑與其在數據庫中的ID

目錄image.php

<!doctype html> 
    <html> 
    <head> 
    <meta charset="utf-8"> 
    <title>image in directory</title> 
    </head> 

    <body> 
    <form method="post" action="directory-imagedatabase.php" enctype="multipart/form-data"> 

    <label>Choose File to Upload:</label><br /> 

    <input type="hidden" name="id" /> 

    <input type="file" name="uploadimage" /><br /> 

    <input type="submit" value="upload" id="upload" /> 

    </form> 
    </body> 
    </html> 

directory-imagedatabase.php 

    <?php 
    $target_Folder = 'images/'; 

    $uid = $_POST['id']; 


    $target_Path = $target_Folder.basename($_FILES['uploadimage']['name']); 

    $savepath = $target_Path.basename($_FILES['uploadimage']['name']); 

     $file_name = $_FILES['uploadimage']['name']; 

     if(file_exists('officework/php-startup/images/'.$file_name)) 
    { 
     echo "That File Already Exisit"; 
     } 
     else 
     { 

      // Database 
     $con=mysqli_connect("localhost","root","sal123","test"); //Change it if required 

    //Check Connection 
      if(mysqli_connect_errno()) 
      { 
       echo "Failed to connect to database" .  mysqli_connect_errno(); 
      } 
    $sql = "INSERT INTO directoryimage (id,image, image_name) 
    VALUES ('','$target_Folder$file_name','$file_name') ";   
      if (!mysqli_query($con,$sql)) 
      { 
       die('Error: ' . mysqli_error($con)); 
      } 
      echo "1 record added successfully in the database"; 
      echo '<br />'; 
      mysqli_close($con); 

      // Move the file into UPLOAD folder 

      move_uploaded_file($_FILES['uploadimage']['tmp_name'],  $target_Path); 

      echo "File Uploaded <br />"; 
      echo 'File Successfully Uploaded to:&nbsp;' . $target_Path; 
      echo '<br />'; 
      echo 'File Name:&nbsp;' . $_FILES['uploadimage']['name']; 
      echo'<br />'; 
      echo 'File Type:&nbsp;' . $_FILES['uploadimage']['type']; 
      echo'<br />'; 
      echo 'File Size:&nbsp;' . $_FILES['uploadimage']['size']; 

     } 
     } 
     ?> 
+0

你想要重命名文件,使其名稱是相同的ID域? – e4c5

+0

顯然,您需要兩步法,因爲您需要使用'INSERT'語句創建ID,然後使用'last_insert_id'功能獲取該ID。然後,您可以使用該ID和「UPDATE」保存創建的條目。 – arkascha

+0

現在沒有我想要更改保存在數據庫中的文件路徑,其id字段@ e4c5 –

回答

0
  1. 獲取記錄的插入ID $id = mysqli_insert_id($con)INSERT
  2. 獲取文件擴展名後:$ext = preg_replace("/\.(gif|jpg|etc)$/", ".$1", $file_name);
  3. 重命名文件與rename()rename("$target_Folder$file_name", $id . $ext);
  4. 更新記錄類似於$sql = "UPDATE directoryimage SET image = CONCAT('{$target_Folder}', id, '{$ext}') WHERE id = $id";
+0

@leonardochallis先生謝謝你的幫助,但我得到這兩個警告(警告:preg_replace() (至少需要3個參數,2中給出)和(重命名(images/12895293_1099151520146863_391821049_n.jpg,41):系統找不到指定的文件(代碼:2)),但文件路徑仍然沒有被其ID替換 –

+0

我的不好,一個小的類型(錯過了逗號),是固定的。瞭解代碼的情況很重要,但這是關於如何實現所需內容的建議。 – LeonardChallis

+0

我已刪除該錯誤。現在沒有錯誤,但仍然該文件路徑列不被替換爲其編號 –