2017-05-15 54 views
-1

我試圖上傳文件到數據庫(使用PHP和MySQL)。我可以成功上傳文件並將其路徑保存在一張表中,但是當我嘗試將文件上傳到另一張表格時,出現如下錯誤:move_uploaded_file:未能打開流。但是,如果我創建另一個數據庫,我可以再次成功上傳文件。我只能將文件上傳到同一個數據庫中的一個表中,而不是多個表中?由於我的項目的設計,我想上傳文件到同一個數據庫中的2個表格,有人能告訴我該怎麼做嗎? 這是可以成功上傳文件的代碼,該表的名稱是照片:PHP的mysql成功上傳文件到一個表,但不是其他

<?php 
    include('config.php'); 
     $file=$_FILES['image']['tmp_name']; 
     $image= addslashes(file_get_contents($_FILES['image']['tmp_name'])); 
     $image_name= addslashes($_FILES['image']['name']);     
     move_uploaded_file($_FILES["image"]["tmp_name"],"photos/" $_FILES["image"]["name"]);  
     $location="photos/" . $_FILES["image"]["name"]; 
     $description=$_POST['description']; 
     $save=mysql_query("INSERT INTO photos (location, description) VALUES ('$location','$description')"); 


     } 
    ?> 

我嘗試通過以下code.i簡單地改變照片photos2上傳文件到另一臺,photos2是另一個表

<?php 
    include('config.php'); 
     $file=$_FILES['image']['tmp_name']; 
     $image= addslashes(file_get_contents($_FILES['image']['tmp_name'])); 
     $image_name= addslashes($_FILES['image']['name']);     
     move_uploaded_file($_FILES["image"]["tmp_name"],"photos2/" $_FILES["image"]["name"]); 

    $location="photos2/" . $_FILES["image"]["name"]; 
    $description=$_POST['description']; 
    $save=mysql_query("INSERT INTO photos2 (location, description) VALUES ('$location','$description')");     
} 
?> 

的名字,我得到了以下錯誤: 警告:move_uploaded_file:未能打開流:沒有這樣的文件或目錄 move_uploaded_file()以:無法移動「C:\ XAMPP \ tmp目錄\ php1793。 tmp'到'photos2/1.png'

此外,我知道mysql已被棄用,我需要將其更改爲mysqli,我將在未來這樣做,現在我只想知道如何將文件上傳到同一數據庫中的2個表。

更新:我認爲我說我的問題的方式導致我不必要的混淆。這就是我所說的「上傳到2張桌子」:我在我的網站上有兩個頁面,我們稱他們爲頁面A和頁面B,用戶可以在頁面A和頁面B上傳照片,從頁面A上傳的照片只能看到在頁面A上,同樣,從頁面B上傳的照片只能在頁面B上看到。因此,創建2個獨立的表格來存儲照片是有意義的。如果它們存儲在同一個表中,那麼在每個頁面上,當我(「選擇*從照片」中選擇)時,查詢將搜索從其他頁面上傳的所有照片,這是不必要的。我不需要同時將相同的照片上傳到兩個不同的表格。

+0

儘管您收到的錯誤信息是由於丟失的**文件夾**(稱爲photos2),您嘗試的嘗試肯定是可能的。你是否試圖上傳到相同的文件夾,只需更改表格?如果是這樣,請將'move_uploaded_file'和'$ location'中的'photos2'改爲'photos'。否則,請創建'photos2'文件夾:) –

+0

否。這是因爲他試圖移動的文件不再存在,因爲他已經移動了它。 – junkfoodjunkie

+0

*「現在我只想知道如何將文件上傳到同一個數據庫中的2個表」* - 什麼;在同一時間還是在不同的操作?你的問題不清楚。 –

回答

0

當您使用move_uploaded_file時,文件被移動。因此,當你嘗試運行第二個代碼時,它不會存在......這是相當明顯的。試試這個:

<?php 
include('config.php'); 
    $file=$_FILES['image']['tmp_name']; 
    $image= addslashes(file_get_contents($_FILES['image']['tmp_name'])); 
    $image_name= addslashes($_FILES['image']['name']);     
    move_uploaded_file($_FILES["image"]["tmp_name"],"photos/" $_FILES["image"]["name"]);  
    copy('photos/'.$_FILES['image']['name'],'photos2/'.$_FILES['image']['name']); 
    $location="photos/" . $_FILES["image"]["name"]; 
    $description=$_POST['description']; 
    $save=mysql_query("INSERT INTO photos (location, description) VALUES ('$location','$description')"); 
    $save=mysql_query("INSERT INTO photos2 (location, description) VALUES ('$location','$description')"); 
    } 
?> 
相關問題