2014-10-16 56 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