首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何使用PHP代码将图片上传到MySQL数据库

如何使用PHP代码将图片上传到MySQL数据库
EN

Stack Overflow用户
提问于 2013-07-18 15:42:49
回答 3查看 322.6K关注 0票数 26

我正在尝试从HTML表单在我的数据库中保存图像。我已经编写了PHP代码来完成此任务。该程序不会生成任何错误消息,也不会在MySQL数据库中插入图像数据。请查收。在这里,我分享了我的代码的摘录。

代码语言:javascript
复制
        /*-------------------
    IMAGE QUERY 
    ---------------*/


    $file   =$_FILES['image']['tmp_name'];
    if(!isset($file))
    {
      echo 'Please select an Image';
    }
    else 
    {
       $image_check = getimagesize($_FILES['image']['tmp_name']);
       if($image_check==false)
       {
        echo 'Not a Valid Image';
       }
       else
       {
        $image = file_get_contents ($_FILES['image']['tmp_name']);
        $image_name = $_FILES['image']['name'];
        if ($image_query = mysql_query ("insert into product_images values (1,'$image_name',$image )"))
        {
          echo $current_id;
         //echo 'Successfull';
        }
        else
        {
          echo mysql_error();
        }
       }
   }
        /*-----------------
    IMAGE QUERY END
    ---------------------*/

    <form action='insert_product.php' method='POST' enctype='multipart/form-data' ></br>
            File        : <input type='file' name= 'image' >
    </form>

错误消息您的SQL语法中存在错误;请查看与您的MySQL服务器版本对应的手册,以了解要在第1行

中使用的正确语法

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-07-18 16:50:54

首先,您应该检查您的图像列是否为BLOB类型

我对您的SQL表一无所知,但我会试着自己制作一个示例。

我们得到了字段id (int)、image (blob)和image_name (varchar(64))。

所以代码应该是这样的(假设ID始终是'1‘,让我们使用这个mysql_query):

代码语言:javascript
复制
$image = addslashes(file_get_contents($_FILES['image']['tmp_name'])); //SQL Injection defence!
$image_name = addslashes($_FILES['image']['name']);
$sql = "INSERT INTO `product_images` (`id`, `image`, `image_name`) VALUES ('1', '{$image}', '{$image_name}')";
if (!mysql_query($sql)) { // Error handling
    echo "Something went wrong! :("; 
}

你在很多方面都做错了。不要使用mysql函数-它们已被弃用!使用PDOMySQLi。您还应该考虑将文件存储在磁盘上的位置。使用MySQL存储图像被认为是不好的想法™。处理像图像这样的大数据的SQL表可能会有问题。

此外,您的HTML表单也不符合标准。它应该看起来像这样:

代码语言:javascript
复制
<form action="insert_product.php" method="POST" enctype="multipart/form-data">
    <label>File: </label><input type="file" name="image" />
    <input type="submit" />
</form>

附注:

在处理文件并将其存储为BLOB时,必须使用mysql_real_escape_string()对数据进行转义,否则将导致语法错误。

票数 45
EN

Stack Overflow用户

发布于 2014-02-12 23:25:34

只需更多细节

  • 添加mysql字段

`image` blob

  • 从图像

获取数据

$image = addslashes(file_get_contents($_FILES['image']['tmp_name']));

  • 将图像数据插入db

$sql = "INSERT INTO `product_images` (`id`, `image`) VALUES ('1', '{$image}')";

  • 向web

显示图像

<img src="data:image/png;base64,'.base64_encode($row['image']).'">

  • End
票数 22
EN

Stack Overflow用户

发布于 2018-11-11 06:00:46

这是一个完美的代码,通过MySQL数据库上传和显示图像。

代码语言:javascript
复制
<html>
<body>
<form method="post" enctype="multipart/form-data">
<input type="file" name="image"/>
<input type="submit" name="submit" value="Upload"/>
</form>
<?php
    if(isset($_POST['submit']))
    {
     if(getimagesize($_FILES['image']['tmp_name'])==FALSE)
     {
        echo " error ";
     }
     else
     {
        $image = $_FILES['image']['tmp_name'];
        $image = addslashes(file_get_contents($image));
        saveimage($image);
     }
    }
    function saveimage($image)
    {
        $dbcon=mysqli_connect('localhost','root','','dbname');
        $qry="insert into tablename (name) values ('$image')";
        $result=mysqli_query($dbcon,$qry);
        if($result)
        {
            echo " <br/>Image uploaded.";
            header('location:urlofpage.php');
        }
        else
        {
            echo " error ";
        }
    }
?>
</body>
</html>
票数 -2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17717506

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档