Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/279.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP将图像和视频插入一个mysql记录_Php_Mysql - Fatal编程技术网

PHP将图像和视频插入一个mysql记录

PHP将图像和视频插入一个mysql记录,php,mysql,Php,Mysql,我成功地将一个图像和视频文件插入我的mysql数据库,但它创建了2条记录。我的信念是因为我的“Type”字段,它不能为同一条记录创建两个不同的值,所以我创建了“Type”和“Type2”,这样可以解决这个问题。它创建了相同的“Image/png”值。 这是我的表单脚本: <form action="saveimage.php" enctype="multipart/form-data" method="post"> <table style="border-collapse:

我成功地将一个图像和视频文件插入我的mysql数据库,但它创建了2条记录。我的信念是因为我的“Type”字段,它不能为同一条记录创建两个不同的值,所以我创建了“Type”和“Type2”,这样可以解决这个问题。它创建了相同的“Image/png”值。 这是我的表单脚本:

<form action="saveimage.php" enctype="multipart/form-data" method="post">
<table style="border-collapse: collapse; font: 12px Tahoma;" border="1" cellspacing="5"      cellpadding="5">
<tbody>
<tr><td>Picture:</td><td><input name="rpic" type="file" accept="image/*"></td></tr>
<tr><td>Video:</td><td><input name="rvideo" type="file" accept="video/*"></td></tr>
<tr><td><input name="Upload Now" type="submit" value="Upload"></td></tr>
</tbody></table>
</form>

图片:
视频:
这是用于插入文件的脚本:

<?php
include("config.php");
error_reporting(E_ERROR | E_PARSE);

function GetImageExtension($rpic)
{
    if(empty($rpic)) return false;
    switch($rpic)
    {
        case 'image/bmp': return '.bmp';
        case 'image/gif': return '.gif';
        case 'image/jpeg': return '.jpg';
        case 'image/png': return '.png';
        default: return false;
    }
}
function GetVideoExtension($rvideo)
{
    if(empty($rvideo)) return false;
    switch($rvideo)
    {
        case 'video/asf': return '.asf';
        case 'video/avi': return '.avi';
        case 'video/wmv': return '.wmv';
        default: return false;
    }
}
if (!empty($_FILES["rpic"]["name"]))
{
    $file_name=$_FILES["rpic"]["name"];
    $temp_name=$_FILES["rpic"]["tmp_name"];
    $type=$_FILES["rpic"]["type"];
    $ext= GetImageExtension($type);
    $name=$_FILES["rpic"]["name"];
    $path = "uploads/".$name;

if(move_uploaded_file($temp_name, $path))
{
    $query_upload="INSERT into recipes (type, rpic, path, posted) VALUES ('".$type."','".$rpic."','".$path."','".date("Y-m-d")."')";
    mysql_query($query_upload) or die("Error in $query_upload == ----->".mysql_error());
} else {
    exit("Error while uploading your file.");
    }
}
if (!empty($_FILES["rvideo"]["name"]))
{
    $file_name=$_FILES["rvideo"]["name"];
    $temp_name=$_FILES["rvideo"]["tmp_name"];
    $type=$_FILES["rvideo"]["type"];
    $ext= GetVideoExtension($type2);
    $name=$_FILES["rvideo"]["name"];
    $path = "uploads/".$name;
    $pathvideo = "uploads/".$name;

if(move_uploaded_file($temp_name, $pathvideo))
{
    $query_upload="INSERT into recipes (type, rvideo, pathvideo, posted) VALUES ('".$type."','".$rvideo."','".$pathvideo."','".date("Y-m-d")."')";
    mysql_query($query_upload) or die("Error in $query_upload == ----->".mysql_error());
} else {
    exit("Error while uploading your file.");
    }
}
?>

每次使用INSERT时,都会创建一个新行。如果只需要一行,请使用一个SQL查询或更新查询:

INSERT into recipes (type, rpic, rvideo, pathvideo, posted) VALUES (...)
您必须重新安排逻辑,或者在第二个查询中使用更新。大概是这样的:

UPDATE recipes SET rvideo = $val WHERE id = $id

在这里,您同时插入照片和视频,同时您需要同时插入照片和视频
验证和数据库插入。因此,使用旗帜概念来实现这一点

//国旗声明 $flag_Photo=0; $flag_Video=0

                    if (!empty($_FILES["rpic"]["name"]))
                    {
                        $file_name=$_FILES["rpic"]["name"];
                        $temp_name=$_FILES["rpic"]["tmp_name"];
                        $type=$_FILES["rpic"]["type"];
                        $ext= GetImageExtension($type);
                        $name=$_FILES["rpic"]["name"];
                        $path = "uploads/".$name;

                    if(move_uploaded_file($temp_name, $path))
                    {
                      $flag_Photo=1;  
                    } 
                    else {
                        $flag_Photo=0;
                        //exit("Error while uploading your file.");
                        }
                    }
                    if (!empty($_FILES["rvideo"]["name"]))
                    {
                        $file_name=$_FILES["rvideo"]["name"];
                        $temp_name=$_FILES["rvideo"]["tmp_name"];
                        $type=$_FILES["rvideo"]["type"];
                        $ext= GetVideoExtension($type2);
                        $name=$_FILES["rvideo"]["name"];
                        $path = "uploads/".$name;
                        $pathvideo = "uploads/".$name;

                    if(move_uploaded_file($temp_name, $pathvideo))
                    {
                    $flag_Video=1; 

                    } else {
                        $flag_Video=0;
                        }
                    }
                    if($flag_Photo ==1 && $flag_Video==1)
                    {
                     $query_upload="INSERT into recipes (type, rpic, path, rvideo, pathvideo,  
                        posted) VALUES 
(“$type.”、“$rpic.”、“$path.”、“$rvideo.”、“$pathvideo.”、“$pathvideo.”、“.date”(“Y-m-d”); mysql\u query($query\u upload)或die(“Error in$query\u upload===--->”.mysql\u Error()); } 其他的 { 退出(“上传文件时出错”);
}

感谢您的回复。我在上面的代码之前只尝试了一个insert语句,但由于rpic(图像)字段位于rvideo(视频文件)之前,因此类型字段显示了rvideo mime类型的image/png。我使用了您提供的代码,但仍然只有一个“类型”“输入的是rvideo类型和路径。路径字段未插入任何记录。不过,感谢您的帮助。更新:将rvideo编码中的“Type”更改为“Type2”后,视频和图像mime类型都已插入到表中。现在,只有名称(rpic和rvideo)需要修复;它们都显示了rvideo的值。好多了。。在照片中也是一样,$name=$_文件[“rvideo”][“name”];在视频中,$name=$_文件[“rvideo”][“name”];请将此更改为对类型所做的更改。。那就行了。干杯干杯它现在正在工作。我不得不从rvideo编码中删除“$path”行,但现在一切都好了。:)