2014-11-05 74 views
5

如何在MySQL数据库中存储和显示图像。到现在我只写的代码是从用户那里得到的图像,并将它们存储在文件夹中,我写到目前为止是代码: HTML文件如何使用php存储图像在mysql数据库中

<input type="file" name="imageUpload" id="imageUpload"> 

PHP文件

$target_dir = "uploads/"; 
$target_file = $target_dir . basename($_FILES["imageUpload"]["name"]); 
$uploadOk = 1; 
$imageFileType = pathinfo($target_file,PATHINFO_EXTENSION); 


if (move_uploaded_file($_FILES["imageUpload"]["tmp_name"], $target_file)) { 
    echo "The file ". basename($_FILES["imageUpload"]["name"]). " has been uploaded."; 
} else { 
    echo "Sorry, there was an error uploading your file.";} 
+0

http://stackoverflow.com/questions/16382672/how-insert-and-retrieve-images-to-and-from-database-using-php – 2014-11-05 12:53:00

+4

我不会建议将图像存储在数据库中,你目前做的是一种更好的方法。所有你需要做的是存储数据库中的图像的路径 – 2014-11-05 12:58:04

+0

感谢您的帮助,我想出了它。现在,我只是将上传的文件的名称存储在我的数据库中,然后检索该名称以便打开图像,然后将其放在我想要的位置。 – 2014-11-05 13:25:52

回答

4

我找到了答案,对于那些正在寻找同样的东西的人来说,我是这么做的。 您不应该考虑将图像上传到数据库,而是可以将上传文件的名称存储在数据库中,然后检索文件名并在任何想要显示图像的地方使用。

HTML代码

<input type="file" name="imageUpload" id="imageUpload"> 

PHP代码

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

    //Process the image that is uploaded by the user 

    $target_dir = "uploads/"; 
    $target_file = $target_dir . basename($_FILES["imageUpload"]["name"]); 
    $uploadOk = 1; 
    $imageFileType = pathinfo($target_file,PATHINFO_EXTENSION); 

    if (move_uploaded_file($_FILES["imageUpload"]["tmp_name"], $target_file)) { 
     echo "The file ". basename($_FILES["imageUpload"]["name"]). " has been uploaded."; 
    } else { 
     echo "Sorry, there was an error uploading your file."; 
    } 

    $image=basename($_FILES["imageUpload"]["name"],".jpg"); // used to store the filename in a variable 

    //storind the data in your database 
    $query= "INSERT INTO items VALUES ('$id','$title','$description','$price','$value','$contact','$image')"; 
    mysql_query($query); 

    require('heading.php'); 
    echo "Your add has been submited, you will be redirected to your account page in 3 seconds...."; 
    header("Refresh:3; url=account.php", true, 303); 
} 

代码来显示图像

while($row = mysql_fetch_row($result)) { 
    echo "<tr>"; 
    echo "<td><img src='uploads/$row[6].jpg' height='150px' width='300px'></td>"; 
    echo "</tr>\n"; 
} 
+1

用户可能有上传图像到数据库的正当理由,并且它可以是表达性的。它不是很受欢迎,所以也不如'支持'(即不那么广泛的知识库) – Strawberry 2014-11-05 13:35:37

+5

警告:上述示例代码对于SQL注入漏洞是敞开的。 – Clinton 2016-05-10 17:18:40

-1
<!-- 
//THIS PROGRAM WILL UPLOAD IMAGE AND WILL RETRIVE FROM DATABASE. UNSING BLOB 
(IF YOU HAVE ANY QUERY CONTACT:[email protected]) 


CREATE TABLE `images` (
    `id` int(100) NOT NULL AUTO_INCREMENT, 
    `name` varchar(100) NOT NULL, 
    `image` longblob NOT NULL, 
    PRIMARY KEY (`id`) 
) ENGINE=InnoDB ; 

--> 
<!-- this form is user to store images--> 
<form action="index.php" method="post" enctype="multipart/form-data"> 
Enter the Image Name:<input type="text" name="image_name" id="" /><br /> 

<input name="image" id="image" accept="image/JPEG" type="file"><br /><br /> 
<input type="submit" value="submit" name="submit" /> 
</form> 
<br /><br /> 
<!-- this form is user to display all the images--> 
<form action="index.php" method="post" enctype="multipart/form-data"> 
Retrive all the images: 
<input type="submit" value="submit" name="retrive" /> 
</form> 



<?php 
//THIS IS INDEX.PHP PAGE 
//connect to database.db name is images 
     mysql_connect("", "", "") OR DIE (mysql_error()); 
     mysql_select_db ("") OR DIE ("Unable to select db".mysql_error()); 
//to retrive send the page to another page 
if(isset($_POST['retrive'])) 
{ 
    header("location:search.php"); 

} 

//to upload 
if(isset($_POST['submit'])) 
{ 
if(isset($_FILES['image'])) { 
     $name=$_POST['image_name']; 
     $email=$_POST['mail']; 
     $fp=addslashes(file_get_contents($_FILES['image']['tmp_name'])); //will store the image to fp 
     } 
       // our sql query 
       $sql = "INSERT INTO images VALUES('null', '{$name}','{$fp}');"; 
          mysql_query($sql) or die("Error in Query insert: " . mysql_error()); 
} 
?> 



<?php 
//SEARCH.PHP PAGE 
    //connect to database.db name = images 
     mysql_connect("localhost", "root", "") OR DIE (mysql_error()); 
     mysql_select_db ("image") OR DIE ("Unable to select db".mysql_error()); 
//display all the image present in the database 

     $msg=""; 
     $sql="select * from images"; 
     if(mysql_query($sql)) 
     { 
      $res=mysql_query($sql); 
      while($row=mysql_fetch_array($res)) 
      { 
        $id=$row['id']; 
        $name=$row['name']; 
        $image=$row['image']; 

        $msg.= '<a href="search.php?id='.$id.'"><img src="data:image/jpeg;base64,'.base64_encode($row['image']). ' " /> </a>'; 

      } 
     } 
     else 
      $msg.="Query failed"; 
?> 
<div> 
<?php 
echo $msg; 
?> 
+2

充满了安全漏洞。 – Boann 2015-08-16 17:55:51

1
if(isset($_POST['form1'])) 
{ 
    try 
    { 


     $user=$_POST['username']; 

     $pass=$_POST['password']; 
     $email=$_POST['email']; 
     $roll=$_POST['roll']; 
     $class=$_POST['class']; 



     if(empty($user)) throw new Exception("Name can not empty"); 
     if(empty($pass)) throw new Exception("Password can not empty"); 
     if(empty($email)) throw new Exception("Email can not empty"); 
     if(empty($roll)) throw new Exception("Roll can not empty"); 
     if(empty($class)) throw new Exception("Class can not empty"); 


     $statement=$db->prepare("show table status like 'tbl_std_info'"); 
     $statement->execute(); 
     $result=$statement->fetchAll(); 
     foreach($result as $row) 
     $new_id=$row[10]; 


     $up_file=$_FILES["image"]["name"]; 

     $file_basename=substr($up_file, 0 , strripos($up_file, ".")); 
     $file_ext=substr($up_file, strripos($up_file, ".")); 
     $f1="$new_id".$file_ext; 

     if(($file_ext!=".png")&&($file_ext!=".jpg")&&($file_ext!=".jpeg")&&($file_ext!=".gif")) 
     { 
      throw new Exception("Only jpg, png, jpeg or gif Logo are allow to upload/Empty Logo Field"); 
     } 
     move_uploaded_file($_FILES["image"]["tmp_name"],"../std_photo/".$f1); 


     $statement=$db->prepare("insert into tbl_std_info (username,image,password,email,roll,class) value (?,?,?,?,?,?)"); 

     $statement->execute(array($user,$f1,$pass,$email,$roll,$class)); 


     $success="Registration Successfully Completed"; 

     echo $success; 
    } 
    catch(Exception $e) 
    { 
     $msg=$e->getMessage(); 
    } 
} 
+0

尽管可以解决问题的代码是可以接受的,但请添加一些解释。 (尽可能小的例子也是一个好主意) – user5226582 2017-04-28 08:08:57

相关问题