2014-03-29 30 views
-1

我想上载图像到数据库,图像只会在用户回显时发出,但它不起作用,并且不会给我任何错误使用php上传图像到数据库

<?php 

session_start(); 

    $pic = $_FILES['pic']; 
    $submit = $_POST['post']; 
    $user = $_SESSION['username']; 

    if($submit){ 
     $connect = mysql_connect("localhost", "root", "123"); 
     if($connect){ 
      $database = mysql_select_db("phplogin"); 
      if($database){ 
       mysql_query("INSERT INTO images(image, user) VALUES ($pic, $user)"); 
       $query = mysql_query("SELECT * FROM images WHERE user = '$user'"); 
       $data2 = mysql_fetch_array($query); 
       header("Content-type: image/jpeg"); 
       echo $data2['image']; 
      } else { 
       die("Couldn't connect to the database please try again, if you fail to connect again please contact me"); 
      } 
     } else { 
      die("Couldn't connect to the database please try again, if you fail to connect again please contact me"); 
     } 
    } 



?> 
+0

您的'$ pic'变量是文件项目的信息数组,它只是一个关于文件的信息数组而不是实际的文件内容 –

+0

如何使它成为文件内容 – user3470226

+0

了解如何进行基本调试。 – CBroe

回答

1

将图像保存在你的服务器,您需要先获取该文件的内容,然后将其插入到数据库中。此外,您的查询不会关闭单引号中的变量。

//Need to get contents then escape any characters that match 
//mysql query elements like quotes etc. 
$contents = mysql_real_escape_string(file_get_contents($_FILES['pic']['tmp_name'])); 
$result = mysql_query("INSERT INTO images(image, user) VALUES ('$contents', '$user')"); 
if($result === FALSE){ 
    //insert failed echo error and die 
    echo mysql_error(); 
    die; 
} 
$query = mysql_query("SELECT * FROM images WHERE user = '$user'"); 
$data2 = mysql_fetch_array($query); 
header("Content-type: image/jpeg"); 
echo $data2['image']; 

请注意,您应该使用mysqli和准备的语句来代替。 mysql_ *和mysql类是折旧的,并且使用预准备语句对于防止注入攻击更好。

+0

感谢您的工作,但现在要在另一个页面上的图像,我只是再次查询数据库,然后回显出来? – user3470226

+0

@ user3470226,是的,为了显示只是创建一个脚本,查看行,发送标题,然后回显图像数据,然后使用指向文件的url,而不是使用指向文件的url脚本的url –

+0

感谢那不能确定那部分。 – user3470226

0

您必须将图像名称保存在数据库表中。

$pic = $_FILES['pic']['name']; 

你应该在文件夹中使用副本()PHP函数

copy($_FILES['pic']['tmp_name'],'path_to_folder/'.$_FILES['name']); 
+0

他希望保存在数据库本身的图像。 –

+0

我们不能将图像保存到数据库中,我们只能保存名称,我已经在上面解释清楚了。 – Ananth

+0

您当然可以将图像保存到数据库,使用longblob列并获取文件内容并将其插入到该列中。虽然有一个枯萎的问题,你应该这样做。 –