2013-05-21 80 views
2

我經歷了無數不同的幫助菜單和主題,並且仍然存在問題。我只想將上傳圖像的文件路徑插入到MySQL數據庫中。我曾嘗試將圖像傳遞給一個變量,然後使用查詢將其推送到數據庫,但它不起作用。我的代碼如下,形式是在最前面,PHP是如下:將上傳圖片的文件路徑保存到MySQL數據庫

<html> 

<body> 

<h1>test</h1> 

<form action="insert.php" method="post" enctype="multipart/form-data"> 

Name <input type="text" name="name" /><br><br> 

Description <input type="text" name="desc" /><br><br> 

Price Low<input type="text" name="price_low" /><br><br> 

Price High <input type="text" name="price_high" /><br><br> 

<input type="hidden" name="MAX_FILE_SIZE" value="512000" /> 
3.Send this file: <input name="userfile" type="file" /> 
4.<input type="submit" value="Send File"/

<input type="submit" /> 

</form> 
a 

</body> 
</html> 




<html> 

<?php 
//upload image 
$uploaddir = ''; 
$uploadfile = $uploaddir . basename($_FILES['userfile']['name']); 
//end of upload image 


if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) { 
echo "File is valid, and was successfully uploaded.\n"; 
} else { 
echo "Upload failed"; 
} 



$con = mysql_connect("localhost","admintest","gen"); 

if (!$con) 

    { 

    die('Could not connect: ' . mysql_error()); 

    } 



mysql_select_db("test2", $con); 



$sql="INSERT INTO products (name, description, price_low, price_high) 

VALUES 

('$_POST[name]','$_POST[desc]','$_POST[price_low]','$_POST[price_high]')"; 



if (!mysql_query($sql,$con)) 

    { 

    die('Error: ' . mysql_error()); 

    } 

echo "1 record added"; 



mysql_close($con) 

?> 



</body> 

回答

0

Security issuesdeprecated extension之外,所有你需要做的是插入文件名到數據庫。要做到這一點,一個「文件名」字段添加到您的數據庫,然後相應地調整你的插入查詢:

INSERT INTO products (name, description, price_low, price_high, filename) 
       VALUES (:name, :desc, :price_low, :price_high, :filename) 

此外,您$uploaddir變量是空的,可能的文件甚至沒有被任何地方的時刻保存。要正確地移動文件,嘗試這樣的事情:

$uploaddir = '/path/where/you/can/save/'; 
$rawFilename = $_FILES['userfile']['name']; 
$extension = pathinfo($rawFilename, PATHINFO_EXTENSION); 

$uploadfile = $uploaddir . md5($rawFilename) . '.' . $extension; 

if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) { 
    echo "File is valid, and was successfully uploaded.\n"; 
} else { 
    echo "Upload failed"; 
} 

此腳本假定您信任上傳的內容和MD5函數只是僅僅是一個快速簡便的方法來「的sanitize」(如果我能叫的)文件的名稱。

+0

該文件正在上傳到根目錄。我試圖刪除不推薦使用的代碼,但遇到了錯誤。 –

相關問題