2009-10-09 63 views
1

我試圖上傳圖像以及添加詳細信息,例如;標題,描述和文件路徑到數據庫表中。使用PHP上傳圖像並將數據存儲在MSSQL中

我正在使用下面的代碼,但它沒有向數據庫添加任何數據;

(該session.php文件包括包含數據庫的連接。)

<?php include('includes/session.php'); 

$uploadDir = 'submitted/pictures/'; 

if(isset($_POST['submit'])) 
{ 
$fileName = $_FILES['file']['name']; 
$tmpName = $_FILES['file']['tmp_name']; 
$fileSize = $_FILES['file']['size']; 
$fileType = $_FILES['file']['type']; 

$filePath = $uploadDir . $fileName; 

$result = move_uploaded_file($tmpName, $filePath); 
if (!$result) { 
echo "Error uploading <strong>file</strong>"; 
exit; 
} 

if(!get_magic_quotes_gpc()) 
{ 
    $fileName = addslashes($fileName); 
    $filePath = addslashes($filePath); 
} 

$title = $_POST['title']; 
$description = $_POST['description']; 

$query = "INSERT INTO $user_pictures (file, title, description) VALUES ('$filePath', '$title', '$description')"; 

mssql_query($query); 

} 

?> 

形式的代碼;

<form name="Image" enctype="multipart/form-data" action="upload-pics2.php" method="POST"> 
Title <input type="text" name="title" maxlength="100" class="textbox" value="<?php echo $form->value("title"); ?>" /> 
Description <textarea name="description" rows="8" cols="40" class="textbox" value="<?php echo $form->value("description"); ?>"></textarea> 
File <input type="file" name="file" accept="image/gif, image/jpeg, image/x-ms-bmp, image/x-png" size="26" class="textbox" /> 
<input type="submit" name="submit" value="Upload" class="button" /> 
</form> 

我想知道是否有人能告訴我什麼可能會出錯?

謝謝。

+0

你想將文件存儲在數據庫或只是路徑?你的問題表明你想將數據存儲在數據庫中,但你的代碼說你只是存儲路徑 – pxl

回答

1

此代碼不能因爲幾個問題的工作。

首先,你應該重新命名HTML字段中的一個或更改字段名稱,當您檢查上傳:

<input type="submit" name="Upload" value="Upload" class="button" /> 

if(isset($_POST['submit'])) 

第二個,這個腳本不會將任何數據存儲到D B。 你應該得到的,消毒和寫入數據到根據字段,例如:

$title = mysql_real_escape_string($_POST['title']); 
$description = mysql_real_escape_string($_POST['description']); 
$query = "INSERT INTO $user_pictures (file, title, description) VALUES ('$filePath', '$title', '$description')"; 

你應該確保目前在DB這些領域,如果沒有 - 你應該創建它們:

ALTER table user_pictures ADD column description text, add column title varchar(255); 
+0

嘿馬克斯,有沒有一個MSSQL等價於mysql_real_escape_string? – doubleplusgood

+0

現在似乎得到這個錯誤; 警告:mssql_query()[function.mssql-query]:message:upload-pics2中'('。(嚴重性15)'附近的語法不正確。上線31 – doubleplusgood

+0

PHP沒有,也沒有相應的逃生MSSQL,但你可以用簡單的避開功能: \t 功能mssql_escape_string($ string_to_escape){ $ replaced_string = str_replace函數( 「'」, 「 ''」,$ string_to_escape ); return $ replaced_string; } 然後調用 $ title = mssql_escape_string($ _ POST ['title']); $ description = mssql_escape_string($ _ POST ['description']); –

1

您有這行if(isset($_POST['Upload']))

其更改爲if(isset($_POST['submit']))

1

的錯誤是 '提交/圖片/' 寫嗎?你也可能想要爲額外的安全層運行is_uploaded_file()。

而且您的查詢似乎是錯誤的

"INSERT INTO $user_pictures (file) VALUES ('$filePath')" 

$ user_pictures需要一個表

嘗試

"INSERT INTO `user_pictures` (`file`) VALUES ('$filePath')" 
+0

@dotty謝謝你。顯然文件是一個關鍵字,所以我將不得不改變這一點。 – doubleplusgood

+0

你是什麼意思關鍵字? – dotty

相關問題