【问题标题】:How to check if no image is selected don't update?如何检查是否没有选择图像不更新?
【发布时间】:2015-11-18 13:46:04
【问题描述】:

我目前正在使用 PDO 处理具有更新功能的项目,更新功能工作正常,但我的问题是,当我尝试更新记录并保持原样时,当我看到数据库时,图像列是emplty..我如何检查文件是否为空以及何时不更新?因为当我尝试使用图像更新记录并点击更新按钮时,图像消失了..

user.class.php

public function upload($id,$FILE_NAME,$FILE_SIZE,$FILE_TYPE,$username,$password,$province)
{
if(empty($_FILE['myImage']['name'])){
echo "error";
}
else
{
$stmt = $this->db->prepare("UPDATE tish_images SET  FILE_NAME=:FILE_NAME,FILE_SIZE=:FILE_SIZE,FILE_TYPE=:FILE_TYPE,username=:username,password=:password,province=:province 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.';
        //continue;
        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';
        //continue;
        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->bindParam( ":username", $username);
        $stmt->bindParam( ":password", $password);
        $stmt->bindParam( ":province", $province);
        $stmt->execute();

        $desired_dir="image_uploads";

        if(is_dir($desired_dir)==false)
        {
            mkdir($desired_dir, 0700);// Create directory if it does not exist
        }
        if(is_file($desired_dir.'/'.$file_name)==false)
        {
            move_uploaded_file($file_tmp,$desired_dir.'/'.$file_name);
            return TRUE;
        }
        else
        {    //rename the file if another one exist
            $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';

$username = isset($_GET['username']) ? $_GET['username'] : '';
$password = isset($_GET['password']) ? $_GET['password'] : '';
$province = isset($_GET['province']) ? $_GET['province'] : '';
$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'];
$username = $_POST['username'];
$password = $_POST['password'];
$province = $_POST['province'];

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

}
if(isset($_GET['id']))
    {
    $id = $_GET['id'];
    extract($crud->getID($id));
    }
?>


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

【问题讨论】:

  • "如何检查文件是否为空" $_FILEempty()
  • @Dagon 你怎么看?

标签: php pdo


【解决方案1】:

我假设您从 &lt;input type="file" /&gt; 标记中获取图像,并且您想检查是否选择了图像。您可以尝试使用empty()$_FILE 来检查是否选择了图像。

例子:

<?php
    if(empty($_FILE['myImage']['name'])):
        //don't update and display an error message.
    else:
        //update record.
    endif;
?>

* 注意:如果您只想接受图像,您可以使用 HTML &lt;input type="file" name="imagefilename" accept="image/x-png, image/gif, image/jpeg" /&gt; 轻松完成此操作。在插入新记录或将所选文件上传到目录之前,不要忘记在 PHP 中验证这一点。

【讨论】:

  • 你能帮我编辑我的代码吗,因为我是 PDO 的新手?
  • 检查图像是否被选中与PDO无关。
  • 您不应该直接投入使用数据库和所有这些东西。首先开始学习基础知识,然后再学习更高级的东西。就像您学习的每一种新语言一样,您首先必须学习基础知识。
  • 但是,可以先帮我解决这个问题,因为我在执行此操作时遇到了麻烦……每次我更新记录时,我的数据库中的图像列总是空的……
  • 如果用户想要更新列怎么办..这就是我遇到问题的地方。所以我认为最好的方法是检查文件是否为空然后不要更新,如果文件有图像然后更新..
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-04-07
  • 2018-08-30
  • 1970-01-01
  • 2020-09-13
  • 1970-01-01
  • 2020-11-17
  • 2014-08-21
相关资源
最近更新 更多