php编辑表单上的php上传文件,如果没有文件则阻止UPDATE

时间:2013-05-04 12:14:47

标签: php upload exists

我有一个表单来编辑MySQL表中的现有值。 其中一个字段存储图像的文件名,(另一个存储图像的文件夹位置) 该文件有一个上传字段,用于上传另一个图像并替换原始图像名称字段中的图像名称。

如果我选择一个文件,这可以正常工作,以替换现有的图像。 如果我不选择替换图像,则该字段为空数据更新。

基本上我是在尝试选择和上传图像时只进行UPDATE sql查询。

我正在使用此代码:

if(!empty($_FILES['file_slick']))
{
$slick = $_FILES['file_slick']['name'];
copy($_FILES['file_slick']['tmp_name'],'../images/product/'.$folder.'/'.$slick); 
$sql_slick = "UPDATE tbl_product SET prod_slick = '".$slick."' WHERE prod_id = '".$prodid."'";
mysql_query($sql_slick);
}

我试过if(!empty($ _ POST ['file_slick']))但是都不起作用。如果选择并上载文件,则会将其移动到正确的文件夹,并将图像文件名更新到该字段中。如果未选择图像,则将空数据更新到图像文件名字段中。

我已经浏览过互联网(主要是在这里),从我所看到的情况来看,我的检查可以防止出现空数据。

这里有人能看到什么问题吗?

3 个答案:

答案 0 :(得分:4)

尝试if(!empty($_FILES['file_slick']['name']))

答案 1 :(得分:0)

因为$_FILES['file_slick']是一个多维数组,所以函数empty返回true,你可以使用$_FILES['file_slick']['error'] == 0检查图像

答案 2 :(得分:0)

在处理数据库查询的脚本中,就在查询之前,设置文件路径的查询占位符,或者对上载到源自数据库的变量的图像或文件的任何引用。

例如。在我正在做的项目中,它必须显示已存储文件的文件路径。所以我从数据库中取出它并将其保存在某处,以便在查询之前的文件路径为空()然后将其设置为以前的值。

我没有发现任何不利因素,但我确定可能会有一些小问题,因为即使没有新提交,我每次进行更改时都会使用已经存在的内容重写数据库。

我的脚本就像这样

$final_size = size_calc( $upload['size'] );
$file_path = addslashes(UPLOAD_DIR . $name);

if ( empty($file_path) ) $file_path = addslashes( $post['file_path'] );
    if ( empty($final_size) ) $final_size = $post['file_size'];
//Perform query
$query = "UPDATE posts SET post_title = '{$post_title}', visible =     {$visible}, post_content = '{$post_content}', post_cat_id =     '{$post_cat_id}',file_path = 
    '{$file_path}', file_size = '{$final_size}' WHERE id = {$post_id} LIMIT 1";
    $result = mysqli_query( $link , $query );