2017-04-10 20 views
3

カテゴリを追加するための小さなフォームがあります。私のテーブルのフィールドは次のとおりです。PHP画像のアップロードと命名の失敗

名前必須

説明必要なし

それがすべてでカテゴリを作成します必須不可フォト情報、それはevになりますイメージ名をデータベースに挿入します。

私が抱えている問題は、画像をアップロードフォルダに移動しないことです。 また、画像の名前が次のように変更されます。画像名がの場合avatar.jpg85789avatar.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番号を入れます._"どのデータベースフィールド? –

+0

photoフィールド – Case

+0

これは、_89439_、または89439レコードの値を持つレコードを意味しますか? –

答えて

1

それは次のようにも、それはイメージの名前を変更しますアップロードフォルダに画像を移動しません。イメージ名がavatar.jpgがある場合、TIは

move_uploaded_file()は二つの引数ではなく、3を取るデータベースフィールドでそれを85789avatar.jpg名前を変更します。 (フォルダにファイル名を追加する)。これに

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がそのアップロードディレクトリに書き込む権限? –

関連する問題