php - 如果使用 php 图像字段为空,则应接受数据

标签 php mysql

我正在编写查询以仅接受 svg、png、jpeg 格式的图像字段。但如果图像字段为空,则在上传时显示为错误,实际上它应该插入其余字段,如名称和所有字段,如果我不是还添加图像。这是我的查询。

例子.php

$title=$_POST['blog_title'];
$result = str_replace(" ", "-", $title);
$description=$_POST['blog_description'];
if(is_uploaded_file($_FILES['image']['tmp_name'])){
$name=$_FILES["image"]["name"];
$type=$_FILES["image"]["type"];
$size=$_FILES["image"]["size"];
$temp=$_FILES["image"]["tmp_name"];
$error=$_FILES["image"]["error"];
$ext = strtolower(pathinfo($name, PATHINFO_EXTENSION));
if($error > 0){
    die("error while uploading");
}else{
    $permissible_extension = array("png", "jpg", "jpeg", "svg", "jpg","jpe");
    if(in_array($ext, $permissible_extension)){
        if(move_uploaded_file($temp,"upload/".$name)){
            $sql = mysql_query("INSERT INTO blogs(image,blog_title,blog_description)values('$name','$result','$description')");
            if($sql){
                header("Location:blogimage.php");  
                exit();
            }else{
                echo "Insertion failed";
            }
        }else{
            echo "File couldn't be uploaded";
        }
    }else{
        echo "Invalid format";
    }
}
}else{
$sql = mysql_query("INSERT INTO blogs(blog_title,blog_description)values('$result','$description')");
if($sql){
    header("Location:blogimage.php");  
    exit();
}else{
    echo "Insertion failed";
}
}

最佳答案

首先,反对使用mysql_* 函数的强制性建议。这已被弃用,使用 mysqli_* functionsPDO相反。

现在,你的问题。如果你想在文件类型为空或错误的情况下存储有关文件的其他信息,则需要在测试前执行 INSERT。

下面是一些你可以尝试的代码:

<?php
//connect to the database using mysqli
$name=$_FILES["image"]["name"];
$type=$_FILES["image"]["type"];
$size=$_FILES["image"]["size"];
$temp=$_FILES["image"]["tmp_name"];
$error=$_FILES["image"]["error"];
if($error>0)
    die("error while uploading");
else
{
    //Insert the informations in your database here, so even without the upload, the info about the file will be stored
    $query = mysqli_query("INSERT INTO blogs(image)values('$name')");
    if($type == "image/png" || $type == "image/jpg"|| $type == "image/jpeg" || $type == "image/svg" || $type == "image/jpe" || $type==" ")
    {
        move_uploaded_file($temp,"upload/".$name);
        echo "upload complete"; 
    }
    else
    {   
        die("Format not allowed or file size too big!");
    }
}

关于php - 如果使用 php 图像字段为空,则应接受数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35244794/

相关文章:

PHP函数在页面加载时自动调用,而不是通过onclick事件调用

javascript - 'heavy' 是如何在服务器上每隔几秒运行一次mysql命令

mysql - 使用 Rails 提取博客文章的 "preview"

mysql 连接表,查询仅返回具有匹配行的行

php - 使用 FFmpeg 提取 FLV 帧 - 支持的格式

php - 使用 phpmyadmin 插入的数据和一列不断重复我尝试的第一个测试用例的值

PHP 警告 : PHP Startup: ? ????????: 无法初始化模块

php - 如何删除 MySQL 数据库中的重复条目?

php - 我是否需要联接才能从此表中检索信息?

javascript - html表单方法不调用脚本