2017-04-10 153 views
3

我有一個小表單來添加類別。我的表中的字段有以下幾種:PHP圖片上傳和命名失敗

名稱要求

說明不要求

照片不要求

這將創建與所有類別信息,它會ev將圖像名稱插入數據庫中。

我遇到的問題是它不會將圖像移動到上傳文件夾。 此外,它將重命名圖像如下:如果圖像名稱是avatar.jpg它將重命名它85789avatar.jpg在數據庫字段中。

我需要它來重命名圖像如下O1CCJDSXBOM2.jpg

最後一個問題是圖像不是必需的,如果您將它留空,它仍然會在數據庫字段中放置89439數字。

if (isset($_POST['submit'])) { 

     $Name = $_POST['name']; 
     $Description = $_POST['description']; 

     if (empty($Name)) { 
      $errors[] = "Name Required."; 
     } 
     if (!empty($errors)) { 
      echo validation_errors($errors[0]); 

     } else { 

     $file = rand(1000, 100000). $_FILES['photo']['name']; 
     $file_loc = $_FILES['photo']['tmp_name']; 
     $file_size = $_FILES['photo']['size']; 
     $folder = "uploads/"; 

     if (($file_size > 2097152)) {   

      echo validation_errors("Your avatar exceeds file size");   

     } else { 

     move_uploaded_file($file_loc, $folder, $file); 

     $db = dbconnect(); 
     $stmt = $db->prepare("INSERT INTO discussion_categories(Name, Description, Photo) VALUES (?,?,?)"); 
     $stmt->bind_param('sss', $Name, $Description, $file); 
     $stmt->execute();   
     $stmt->close(); 

     header("Location: managecategories.php");  
+0

「_it仍然把89439號在數據庫field._」 的數據庫字段? –

+0

照片字段 – Case

+0

這是否意味着一個值爲_89439_或89439記錄的記錄? –

回答

1

它不會將圖像的上傳文件夾還它,如下所示,將重命名的圖像。如果映像名稱是avatar.jpg TI將在數據庫領域85789avatar.jpg其重命名爲

move_uploaded_file()有兩個參數,而不是三個。更新此行:

move_uploaded_file($file_loc, $folder, $file); 

對此(追加文件名的文件夾):

move_uploaded_file($file_loc, $folder . $file); 

的最後一個問題是圖像不是必需的,如果你讓它空白仍將89439號碼放入數據庫字段中。

因爲move_uploaded_file()回報boolean,代碼可以被更新,以僅當文件被上傳成功插入一條記錄。

if (move_uploaded_file($file_loc, $folder . $file)) { 
    $db = dbconnect(); 
    $stmt = $db->prepare("INSERT INTO discussion_categories(Name, Description, Photo) VALUES (?,?,?)"); 
    $stmt->bind_param('sss', $Name, $Description, $file); 
    $stmt->execute();   
    $stmt->close(); 
} 
+0

它沒有改變任何東西 – Case

+0

我按照你的建議修改了它仍然沒有上傳文件,最後一部分如果上傳你的代碼不允許任何字段添加數據 – Case

+0

你確定用戶php運行寫入該上傳目錄的權限? –