2015-09-01 46 views
0

我在這裏有更新圖像的代碼,當我選擇圖像時,更新工作正常。但是,當我嘗試做一些更新而不更改圖像時,它已成功更新。當我查看我的數據庫時,該字段爲空。每當我嘗試更新它,只是保留圖像,它只是保存一個空的字段。當我嘗試更新並選擇一個圖像來更改數據庫中的當前圖像時,它工作正常。我不知道它有什麼問題,沒有錯誤。有人可以幫助我嗎?更新時「空白字段」,如果沒有選擇圖像不更新數據庫?

user.class.php

public function upload($id,$FILE_NAME,$FILE_SIZE,$FILE_TYPE) 
{ 
$stmt = $this->db->prepare("UPDATE tish_images SET FILE_NAME=:FILE_NAME,FILE_SIZE=:FILE_SIZE,FILE_TYPE=:FILE_TYPE WHERE id=:id"); 

$errors= array(); 
foreach($_FILES['files']['tmp_name'] as $key => $error) 
{ 
    if ($error != UPLOAD_ERR_OK) 
    { 
     $errors[] = $_FILES['files']['name'][$key] . ' was not uploaded.'; 
     return FALSE; 
    } 
    $file_name = $key.$_FILES['files']['name'][$key]; 
    $file_size = $_FILES['files']['size'][$key]; 
    $file_tmp = $_FILES['files']['tmp_name'][$key]; 
    $file_type = $_FILES['files']['type'][$key]; 
    if($file_size > 2097152) 
    { 
     $errors[] = 'File size must be less than 2 MB'; 
     return FALSE; 
    } 
    try 
    { 
     $stmt->bindParam(":id", $id); 
     $stmt->bindParam(":FILE_NAME", $file_name, PDO::PARAM_STR); 
     $stmt->bindParam(":FILE_SIZE", $file_size, PDO::PARAM_STR); 
     $stmt->bindParam(":FILE_TYPE", $file_type, PDO::PARAM_STR); 
     $stmt->execute(); 

     $desired_dir="image_uploads"; 

     if(is_dir($desired_dir)==false) 
     { 
      mkdir($desired_dir, 0700); 
     } 
     if(is_file($desired_dir.'/'.$file_name)==false) 
     { 
      move_uploaded_file($file_tmp,$desired_dir.'/'.$file_name); 
      return TRUE; 
     } 
     else 
     { 
      $new_file=$desired_dir.'/'.$file_name.time(); 
      move_uploaded_file($file_tmp,$new_file); 
      return TRUE;    
     } 
    } 
    catch(PDOException $e) 
    { 
     echo $e->getMessage(); 
     return FALSE; 
    } 
} 
} 

update.php

<?php 

include_once 'DB.php'; 

$FILE_NAME = isset($_GET['FILE_NAME']) ? $_GET['FILE_NAME'] : ''; 
$FILE_SIZE = isset($_GET['FILE_SIZE']) ? $_GET['FILE_SIZE'] : ''; 
$FILE_TYPE = isset($_GET['FILE_TYPE']) ? $_GET['FILE_TYPE'] : ''; 

if(isset($_FILES['files'])){ 
$id = $_GET['id']; 

    if($crud->upload($id,$FILE_NAME,$FILE_SIZE,$FILE_TYPE)) 
    { 
    echo "<script type='text/javascript'>alert('Successfully Updated!'); </script>"; 
    } 
    else 
    { 
    echo "<script type='text/javascript'>alert('Updating Failed!');</script>"; 
    } 
} 

<body> 
    <div class="container"> 
    <p><strong>Survey Update</strong></p> 
    <br /> 

    <div id="Survey-Update"> 
    <form method="POST" enctype="multipart/form-data" action=""> 
     <table class='table table-bordered'> 

     <?php echo $FILE_NAME; ?> 
     <input type="file" name="files[]" value="" multiple/> 
     <br /> 
     <br /> 
     <input type="submit"/> 

</table> 
</form> 
</div> 
</div> 
</body> 
</html> 
+0

是否所有字段爲空?如果不是,哪一個是空的?你基本上是在你的問題中對自己的答案進行「僞編碼」 - 如果沒有選擇圖像,則執行X.如果選擇了新圖像,則執行Y.對該條件進行測試。 –

+0

是的,所有字段都是空的 – kier

回答

0

也許這可以幫助你我們

如果(!空($ _ FILES [ 'fieldname'] ['name'])){//上傳} else {//不上傳}