php - 如果 php mysql 查询中为空,如何不包含输入文件

标签 php mysql isset

这是我的方法,但如果更新时输入文件(图像)为空,则它不起作用。我希望如果输入 FILE 为空,它不会更新数据库中的 $file 。但如果有文件它就会更新。这就是为什么我在 IF ELSE 中有 2 个查询。

 <?php

    if (!isset($_FILES['image']['tmp_name'])) {
    mysql_query("UPDATE profile set name ='".$_POST['name']. "', age ='".$_POST['age']. "', bdate ='".$_POST['bdate']."', bplace ='".$_POST['bplace']."', educ ='".$_POST['educ']."', occu ='".$_POST['occu']."', inc ='".$_POST['inc']."', status ='".$_POST['status']."', addr ='".$_POST['addr']."', contact ='".$_POST['contact']."', probpres ='".$_POST['probpres']."', findings ='".$_POST['findings']."', evalreco ='".$_POST['evalreco']."', recom ='".$_POST['recom']."', lastdate =  DATE_FORMAT(NOW(),'%m-%d-%Y %h:%i %p')  WHERE app_id = '".$_POST['app_id1']."'");
    }
    else {
    $file=$_FILES['image']['tmp_name'];
    $image= addslashes(file_get_contents($_FILES['image']['tmp_name']));
    $image_name= addslashes($_FILES['image']['name']);
    move_uploaded_file($_FILES["image"]["tmp_name"],"photos/" . $_FILES["image"]["name"]);
    $image_save ="photos/" . $_FILES["image"]["name"];
        /*with file in query*/
    mysql_query("UPDATE profile set name ='".$_POST['name']. "', age ='".$_POST['age']. "', bdate ='".$_POST['bdate']."', bplace ='".$_POST['bplace']."', educ ='".$_POST['educ']."', occu ='".$_POST['occu']."', inc ='".$_POST['inc']."', status ='".$_POST['status']."', addr ='".$_POST['addr']."', contact ='".$_POST['contact']."', photo ='$image_save',  probpres ='".$_POST['probpres']."', findings ='".$_POST['findings']."', evalreco ='".$_POST['evalreco']."', recom ='".$_POST['recom']."', lastdate =  DATE_FORMAT(NOW(),'%m-%d-%Y %h:%i %p')  WHERE app_id = '".$_POST['app_id1']."'");
    }
    ?>

最佳答案

您可以尝试类似以下的操作 - 未经测试但看起来不错。我假设表单设置为 POST 并且 enctype 设置为 multipart/form-data

<?php
    $sql="UPDATE `profile` set 
            `name`='".$_POST['name']. "',
            `age`='".$_POST['age']. "',
            `bdate`='".$_POST['bdate']."',
            `bplace`='".$_POST['bplace']."',
            `educ`='".$_POST['educ']."',
            `occu`='".$_POST['occu']."',
            `inc`='".$_POST['inc']."',
            `status`='".$_POST['status']."',
            `addr`='".$_POST['addr']."',
            `contact`='".$_POST['contact']."',
            `probpres`='".$_POST['probpres']."',
            `findings`='".$_POST['findings']."',
            `evalreco`='".$_POST['evalreco']."',
            `recom`='".$_POST['recom']."',
            `lastdate`=DATE_FORMAT( NOW(),'%m-%d-%Y %h:%i %p') ";

    /* Perhaps a bit of overkill with detection but better safe than sorry */
    if( isset( $_FILES ) && is_array( $_FILES ) && array_key_exists( 'image', $_FILES ) && array_key_exists('name',$_FILES['image']) && !empty( $_FILES['image']['name'] ) ){

        /* The user HAS uploaded a file so add the photo/file and the where clause */

        /* Perform image manipulation / saving etc */
        $tmpfile=$_FILES['image']['tmp_name'];
        $filename=$_FILES['image']['name'];

        $image=file_get_contents( $tmpfile );
        $image_name=addslashes( $filename );

        $image_save="photos/" . $filename;
        move_uploaded_file( $tmpfile, $image_save );

        /* add elements to query */
        $sql .= ", `photo` ='".$image_save."' WHERE `app_id`='".$_POST['app_id1']."';";

    } else {
        /* The user has NOT uploaded a file so just add the where clause */
        $sql .= "WHERE `app_id`='".$_POST['app_id1']."';";
    }

    mysql_query( $sql );

?>

关于php - 如果 php mysql 查询中为空,如何不包含输入文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32548148/

相关文章:

php - 是什么导致 chrome 出现 "unexpectedly closed the connection ERR_INCOMPLETE_CHUNKED_ENCODING"

php - 如何使用PHP preg_replace 正则表达式查找和替换文本?

java - GWT 2.4 - 在 Web 服务器上部署

mysql - 如何在 OS X Yosemite/El Capitan 上启动时自动加载 MySQL

php - 为什么 in_array() 对 $_POST 不起作用?

PHP For 循环不启动

javascript - PHP 数组到 JavaScript 长度

mysql - docker : Multiple Instances for One MySQL Database

javascript - 在 javascript/jQuery 中有类似 isset of php 的东西吗?

php - 除了 empty() 之外,如何使用 PHP 的 isset()?