2012-07-20 106 views
0

我的PHP图片上传代码有一个小问题,我没有得到正确的文件名保存到我的MySQL数据库。PHP图片上传 - 发现错误

请告诉我我做错了什么。

PHP

// Upload File to Directory 
$code = md5(time()); 
$image = $_FILES['userfile']['name']; 
$imagename = $code.$image; 
$uploaddir = '../_gallery/' . $imagename; 
$uploadfile = $uploaddir . basename($_FILES['userfile']['name']); 
move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile); 

MySQL查询

$sql="UPDATE b_events 
     SET ename = '$event_name', 
      edescription = '$event_description', 
      edate = '$event_date', 
      etime = '$event_time', 
      ecost = '$event_cost', 
      eimage = '$imagename' 
     WHERE id = '$update'"; 
$result=mysql_query($sql); 
+1

什么结果你希望得到和你得到什么结果呢? – DonSeba 2012-07-20 10:49:10

+0

即时获取文件名,试图用md5重新命名它,文件使用新名称正确上传,但没有正确上传到数据库。 – user1540512 2012-07-20 10:52:49

+3

欢迎来到堆栈溢出!请不要将'mysql_ *'函数用于新代码。他们不再被维护,社区已经开始[弃用流程](http://goo.gl/KJveJ)。请参阅[**红框**](http://goo.gl/GPmFd)?相反,您应该了解[准备好的语句](http://goo.gl/vn8zQ)并使用[PDO](http://php.net/pdo)或[MySQLi](http://php.net/ mysqli的)。如果你不能决定,[本文](http://goo.gl/3gqF9)将有助于选择。如果你关心学习,[这里是很好的PDO教程](http://goo.gl/vFWnC)。 – 2012-07-20 10:55:31

回答

1

监守你这个名字上传文件到目录中,您需要把这个名字插入到你的数据库

或通过将值分配给新变量

$sql="UPDATE b_events 
      SET ename = '$event_name', 
       edescription = '$event_description', 
       edate = '$event_date', 
       etime = '$event_time', 
       ecost = '$event_cost', 
       eimage = '$uploadfile' 
     WHERE id = '$update'"; 

OR

$file_name =basename($_FILES['userfile']['name']; 

$sql="UPDATE b_events 
      SET ename = '$event_name', 
       edescription = '$event_description', 
       edate = '$event_date', 
       etime = '$event_time', 
       ecost = '$event_cost', 
       eimage = '$file_name' 
     WHERE id = '$update'"; 
+0

我仍然只得到文件名“image.jpg”,它应该像“0fec90395c188efea02300c1dabf7950image.jpg”。 – user1540512 2012-07-20 11:01:00

+0

好的,你需要使用这个变量来插入$ imagename,你通过连接md5和文件 – 2012-07-20 11:04:02

+0

所做的尝试,在我的文章,不工作,没有得到全名插入数据库,只是文件上传100%正确使用名称更改而不是数据库本身。 – user1540512 2012-07-20 11:08:36