我正在编写查询以仅接受svg,png,jpeg格式的图像字段。但是,如果图像字段为空,则在上载时显示为错误,实际上它应该插入其余字段,如name,如果我不添加图像,也应全部添加这是我的查询。

example.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!");
    }
}

10-04 12:11
查看更多