2012-04-07 66 views
-1

嗨,我有這個腳本,工程很好,但現在即時通訊嘗試讓它將3個圖像的名稱添加到我的數據庫在相同的數據庫行,如果您上傳3圖像$擴展名將顯示圖像的3個名稱,但我不知道如何將3個名稱放入image1,image2,images3下的同一數據庫行中任何人都有任何想法可以做到這一點?我嘗試了一切,我知道沒有運氣感謝。多個上傳把圖像名稱放在同一個數據庫行

`$connection = mysql_connect("localhost", "????", "????"); 
mysql_select_db("????", $connection); 
$uploaddir = "upload/"; 
$MaxSize = "600000"; 
$number_of_files = count($_FILES['userfile']); 
for($i=0;$i<=$number_of_files;$i++) { 
$filename_format = uniqid(Img_); 
if (!$_FILES['userfile']['size'][$i] == 0) 
{ 
if ($_FILES['userfile']['size'][$i] > $MaxSize) 
{ 
echo "ERROR: file too big"; 
exit;} 
$tempfile = $_FILES['userfile']['tmp_name'][$i]; 
$uploadfile = $_FILES['userfile']['name'][$i]; 
$extension = $_FILES['userfile']['type'][$i]; 
if (strstr($extension,"jpeg")) 
{ 
$extension=".jpg"; 
} 
elseif (strstr($extension,"gif")) 
{ 
$extension=".gif"; 
} 
elseif (strstr($extension,"png")) 
{ 
$extension=".png"; 
} 
else 
{ 
echo "ERROR: Only gif/jpeg/png allowed."; 
exit; 
} 
if(copy($tempfile, $uploaddir.$uploadfile)) 
{ 
echo "Copy Successfull!"; 
} 
else 
{ 
echo "ERROR: something happened trying to copy the temp file to the folder"; 
} 
if(rename($uploaddir.$uploadfile,$uploaddir.$filename_format.$extension)) 
{ 
}else{ 
$query = "INSERT INTO photos (image1, image2, image3) VALUES ('WHAT TO PUT  HERE?','HERE','AND HERE')"; 
$result = mysql_query($query); 
echo " and renamed to $filename_format$extension"; 
} 
} 
else 
{ 
echo "ERROR: Problem renaming the file.. $uploadfile"; 
} 
}`. 

回答

0

這不是一個很好的數據庫設計。如果有人上傳四張圖片怎麼辦?如果他們上傳十個呢?該方法使代碼複雜化,因爲您必須針對同一事物處理多個列,並且還會對可存儲的值的數量施加任意限制。

對每個上傳的文件使用單獨的數據庫記錄會更好。如果要指示一組文件全部上傳到一起,請創建一個照片組表,其中的行代表一組照片上傳到一起,並使照片表中的每個記錄都包含照片組表中的記錄ID。這樣,您可以將多個照片記錄與單個照片組相關聯。

0

你不應該在給定的行中放置可變數量的列(事實上,據我所知,對於大多數SQL來說這是不可能的)。

如果,例如,你有一個有附件一論壇上發帖,你應該做這樣的事情:

+---------------------------------------------+ 
| Table `forum_posts`       | 
+-----------+--------------+--------+---------+ 
| post_name | post_content | etc... | post_id | 
+-----------+--------------+--------+---------+ 
| "Example | "Blah blah | ... | 5 | 
| post" | blah..." |  |   | 
+-----------+--------------+--------+---------+ 

其中POST_ID是一個自動遞增的主鍵(這基本上意味着,在這個每行表具有唯一POST_ID),你應該把你的圖片在一個新的表,就像這樣:

+----------------------------------------------+ 
| Table `forum_post_images`     | 
+------------+------------+---------+----------+ 
| image_url | image_name | post_id | image_id | 
+------------+------------+---------+----------+ 
| image1.png | "Lol!"  | 10 |  1 | 
+------------+------------+---------+----------+ 
| image2.jpg | "asdf"  | 1  |  2 | 
+------------+------------+---------+----------+ 
| image3.gif | "Example" | 3  |  3 | 
+------------+------------+---------+----------+ 

在這裏,每個圖像都有一個唯一的ID(以防萬一,我們永遠需要它),的一個id發佈它屬於。現在你可以做兩個單獨的查詢來加載一個論壇帖子和附件中的圖片:

SELECT * FROM `forum_posts` WHERE `post_id` = 5; 

SELECT * FROM `forum_post_images` WHERE `post_id` = 5; 

這將返回,在兩個查詢,崗位信息和圖像連接到它。您可以使用相同的方法修改您的特定應用程序的這種設計。

相關問題