2014-10-16 60 views
0

我成功地能够插入一个图像和视频文件到我的mysql数据库,但它正在创建2条记录。我的信念是因为我的“类型”字段,它无法为同一条记录创建2个不同的值,所以我创建了“Type”和“Type2”来解决问题。它创建了相同的“Image/png”值。 这里是我的形式脚本:PHP插入图像和视频到一个mysql记录

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

任何帮助,任何人都可以提供将不胜感激。再次,我宁愿只创建一条记录。 在此先感谢!

回答

1

在这里,你是在同一时间都插入照片&视频,在此期间,你需要做两件事
验证& dB的插入。因此,使用国旗概念来实现这一点,

// flag declaration $ 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 

( ' “$类型。”' ' “$ rpic,”', ' “$路径。”' ' “$ rvideo。”''”。$ pathvideo。 “','”。date(“Ymd”)。“')”; } }; }; }; }其他 { 退出(“在上传文件时出错。”); }。

+0

我使用了您提供的代码,但仍然只输入了一个“Type”,它是rvideo类型和路径。路径字段没有插入记录。不过,感谢您的帮助。 – wilcan 2014-10-17 12:48:23

+0

更新:将rvideo编码中的“类型”更改为“Type2”后,视频和图像MIME类型已插入到表格中。现在,只有名称(rpic和rvideo)需要修复;他们都显示了rvideo的价值。 – wilcan 2014-10-17 12:53:52

+0

好得多..相同 在照片中,$ name = $ _ FILES [“rvideo”] [“name”]; 在视频中,$ name = $ _ FILES [“rvideo”] [“name”]; 请改变这一点,因为你为类型..它会工作。 干杯! – 2014-10-17 13:31:08

0

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

INSERT into recipes (type, rpic, rvideo, pathvideo, posted) VALUES (...) 

必须重新安排你的逻辑或第二查询中使用UPDATE。事情是这样的:

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

感谢您的回复我也尝试之前,我上面的代码只是1条INSERT语句,但是由于rpic(图像)领域rvideo来之前(视频文件),类型字段显示图像/ png为mime类型的rvideo。 – wilcan 2014-10-17 00:33:53