1

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

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

基本上,如果选择并上传了图像,我只会尝试执行 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'])) 但都不起作用。如果选择并上传了一个文件,它将被移动到正确的文件夹中,并且图像文件名被更新到该字段中。如果未选择图像,则将空数据更新到图像文件名字段中。

我环顾了互联网(主要是在这里),据我所见,我防止空数据的检查应该有效。

任何人都可以在这里看到任何问题吗?

4

3 回答 3

4

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

于 2013-05-04T12:18:05.353 回答
0

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

于 2013-05-04T12:36:00.363 回答
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 );
于 2016-10-13T03:43:15.540 回答