当前位置: 首页 > 面试题库 >

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

太叔昆
2023-03-14
问题内容

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

        /*-------------------
    IMAGE QUERY 
    ---------------*/


    $file   =$_FILES['image']['tmp_name'];
    if(!isset($file))
    {
      echo 'Please html" target="_blank">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行的’‘附近使用正确的语法


问题答案:

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

我对您的SQL表一无所知,但是如果我尝试以自己的示例为例。

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

因此,代码应如下所示(假设ID始终为“ 1”,让我们使用此mysql_query):

$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函数-
不推荐使用!使用PDO或MySQLi。您还应该考虑在磁盘上存储文件位置。使用MySQL存储图像被认为是BadIdea™。使用大数据(例如图像)处理SQL表可能会出现问题。

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

<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(),否则将导致语法错误。



 类似资料:
  • 日安!我正在尝试搜索一个从Android上传一个图像文件到一个在线MySQL数据库的基本教程,但是我找不到任何。 我现在正在做一个activity,可以把用户的个人资料图片从Android上传到在线服务器上。 我需要的是像显示一个按钮,当它被点击时,用户可以从文件中选择一个图像。有人能指导我做这件事吗?提前道谢!

  • 这几天来,我一直对这个问题耿耿于怀,似乎在任何地方都找不到正确的答案。任何帮助都将不胜感激! 最终目标:让用户上传最多4张图片。检查错误。使用文件名上传图片到文件系统中的用户文件夹中(mkdir如果不存在),将文件路径存储在SQL表的相应部分。 我不断地改变事情以获得部分结果,现在我已经把自己编码成了一个大习惯。如果您有任何问题,请告诉我,甚至可以建议一个更好的方法来实现最终目标。 谢谢!! 从框

  • 问题内容: 如何在MySQL数据库中存储和显示图像。到目前为止,我只编写了从用户那里获取图像并将其存储在文件夹中的代码,而到目前为止,我编写的代码是: HTML FILE PHP文件 问题答案: 我找到了答案,对于那些在这里寻找相同事物的人,我是怎么做的。您不应该考虑将图像上传到数据库,而是可以将上传文件的名称存储在数据库中,然后检索文件名,并在要显示图像的任何位置使用它。 HTML代码 PHP代

  • 这里的代码在插件中正常工作,但我无法将类似于的结果转换为一个可以在php脚本中使用的图像。任何帮助都会很好。谢谢!

  • 我尝试用php建立一个上传图片系统。经过测试,系统回声“图像已上传”,但在数据库中没有显示。这是我的密码 upload.php get.php 我点击了提交按钮,没有选择任何文件,这2行警告显示出来 警告:file_get_contents():upload.php第14行中的文件名不能为空。 line14是这个$Image=addslash(file_get_contents($_FILES['

  • 问题内容: 我正在上传base64字符串,但GraphQL挂起了。如果我将字符串切成少于50,000个字符,它将起作用。50,000个字符后,graphQL永远不会进入解析函数,但不会给出错误。在较小的字符串上,它可以正常工作。 问题答案: 此处的正确方法是使用AWS AppSync通过复杂类型执行实际的S3上传- 您在此处说明的内容看起来更像是您尝试将base64编码的图像作为字符串保存到字段中