php - 如果没有添加文件,如何在 MySQL 数据库单元中插入 "Null"值?

标签 php mysql

我有一个表单,可以将输入数据发送到 MYSQL 数据库上的相应字段。现在,我已经设置了其中上传的任何文件都打包在 zip 中并放置在“uploads”文件夹中,同时将其发送到数据库文件名/位置。当用户上传没有文件时,它会在相应的数据库"file"单元格中将其作为 NULL 结果发送到数据库,并且不会将 zip 文件发送到“上传”文件夹,如何做到这一点? **更新:好的,我从建议的答案开始,但当没有上传文件时,不会得到“NULL”,就像我写的那样。我尝试了 if/else 语句,它是相同的。我做错了什么?

This what the array looks like when no file is uploaded: Array ( [name] => Array ( [0] => ) [type] => Array ( [0] => ) [tmp_name] => Array ( [0] => ) [error] => Array ( [0] => 4 ) [size] => Array ( [0] => 0 ) )

错误字段包含 4。我认为这可能是它不起作用的原因。我不明白为什么这个错误字段有这个数字。请问有什么建议吗?

PHP

<?php

$project = $_POST['project'];
$assignto = $_POST['assignto'];
$asdate = $_POST['asdate'];

$chdate = $_POST['chdate'];
$ddate = $_POST['ddate'];
$notes = $_POST['notes'];


$asdate=date('Y-m-d', strtotime($asdate));
$chdate=date('Y-m-d', strtotime($chdate));
$ddate=date('Y-m-d', strtotime($ddate));

$timestamp = time();

if (isset ($_POST['submit'])) 
{
     $filesArray= $_FILES["files"];

 for ($num=0; $num<count($filesArray["name"]);$num++)
 {
     $fileName = $filesArray["name"][$num];
     $tempName= $filesArray["tmp_name"][$num];

     move_uploaded_file($tempName,"tmp/".$fileName);
 }
     $archiveName= $timestamp.".zip";
     $filesArrayNames= $_FILES["files"]["name"];


     $zipsDir= scandir ("uploads/");
     $error = false;
     foreach($zipsDir as $zipDirfile)
     {
         if($zipDirfile == $archiveName)
         {
             $error= true ;
             break;
         }
     }

        if ($error== false)
        {
            $tmpDir = scandir ("tmp/");
            $zip = new ZipArchive;
            $zip->open("uploads/".$archiveName, ZipArchive::CREATE);


             for ($num =0; $num<count($filesArray["name"]);$num++)
            {
            $fileName = $filesArray["name"][$num];
            foreach($tmpDir as $tmpDirfile)
            {
                    if($tmpDirfile == $fileName)
                    {
                    $zip->addFile("tmp/".$fileName);
                    echo " Adding: ".$fileName."<br/>"; 
                    }
            }
        }
        $zip->close();

        for ($num=0; $num<count($filesArray["name"]);$num++)
        { 
        $fileName = $filesArray["name"][$num];
            foreach($tmpDir as $tmpDirFile)
            {
                    if($tmpDirfile == $fileName)
                    {
                     unlink("tmp/".$fileName);
                    }

            }


          }
        }
        else 
        {                           
        echo "Name already exists";



 }

} if (!empty($filesArray)) {
$filepath = "NULL";
}else

{$filepath = addslashes("https://docs.google.com/viewer?url=www.art.com/uploads/".$archiveName.""); }

print_r($filepath);

mysql_connect("tre.com","amadast","ufco1954") or die ('Error:' .mysql_error());
//database connection
    mysql_select_db("mediamanagement");

    $sql = "INSERT INTO demo (`name`, `id_continent`, `lastvisit`, `cdate`, `ddate`, `file`,`notes`)
        VALUES ('".$project."', '".$assignto."','".$asdate."','".$chdate."','".$ddate."','".$filepath."','".$notes."')";
mysql_query($sql);


header('Location: edit-projects.html');

?>

最佳答案

在创建 $filepath 变量的地方,只需检查是否上传了文件,以及是否不使用“NULL”作为内容。

例如:

$filepath = addslashes("https://docs.google.com/viewer?url=www.amada-stage.com/uploads/".$archiveName.""); 
if (empty($filesArray)) {
    $filepath = "NULL";
}

您可以执行类似的操作来阻止上传:

改变

if ($error== false)

if ($error == false && !empty($filesArray))

顺便说一句:我希望这些不是您的 mysql_connect 行中真正的数据库凭据!

关于php - 如果没有添加文件,如何在 MySQL 数据库单元中插入 "Null"值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19148243/

相关文章:

php - 如何使用php命令行定义多个ini设置?

php - 鼠标悬停时更改表格行的颜色

php - 无法检索数据库中的值并且无法更新表

Mysql ODBC 5.3 驱动程序在点击测试时崩溃

mysql - 通过用户约束的映射连接两个表

c# - ConfigurationManager.ConnectionStrings ["aaa"].ConnectionString 将 127.0.0.1 替换为 localhost

php - Laravel 6-MariaDB 10.1 : Illuminate\Database\QueryException : SQLSTATE[HY000] migration error

javascript - 通过jqxGrid中一个单元格的值选择一行

java - 如何将字符串从 Android 发送到 PHP?我的 PHP 脚本应该如何处理它?

sql - 在 sql 中使用 UNIONS 时使用整体 WHERE 子句